我有问题。我有桌子:

Customer(cid,etc..),
Motorbike(mid, name, etc..)


和桌子

Rent(rid,cid, mid, check_in, check_out, etc..).


摩托车名称包括品牌(例如Yamaha XT660 R,Yamaha R6,Honda CBF125R等)

我的任务是找到租用所有Yamaha或Suzuki摩托车的客户。
我的查询:
选择c.name,m.name,count(c.name)
来自摩托车m,租金r,客户c
其中c.cid = r.cid AND r.mid = m.mid和(m.name如'Yamaha%'或m.name如'Suzuki%')
按c.ime分组

最佳答案

听起来您应该可以使用简单的JOIN查询来解决它:

SELECT
    r.rid, m.name, c.*
FROM
    Rent r
    JOIN Motorbike m
        ON r.mid = m.mid
    JOIN Costumer c
        ON r.cid = c.cid
WHERE
    m.name LIKE 'Yamaha%'
    OR m.name LIKE 'Honda%'
ORDER BY
    m.name, r.check_in


上面将为所有Yamaha / Honda自行车的每次租赁选择租赁ID,自行车名称和完整的客户信息。

如果要获得租用所述自行车的“唯一”客户列表,而不是完整的租车历史记录,可以使用GROUP BY

SELECT
    c.cid, m.name, COUNT(*) AS num_rentals
FROM
    Rent r
    JOIN Motorbike m
        ON r.mid = m.mid
    JOIN Costumer c
        ON r.cid = c.cid
WHERE
    m.name LIKE 'Yamaha%'
    OR m.name LIKE 'Honda%'
GROUP BY
    c.cid

关于mysql - 如何从其他表中获得所有具有“相同”名称的值的客户,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23723172/

10-11 22:20
查看更多