MySQL:如何使用子查询和联接选择min()
我有3个MySQL表。我把它们删减了,只显示重要的栏目MySQL:如何使用子查询和联接选择min(),mysql,join,subquery,Mysql,Join,Subquery,我有3个MySQL表。我把它们删减了,只显示重要的栏目 items id | title | 1 | Hamlet | 2 | Romeo and Juliet | 3 | The Merchant of Venice | listings id | item_id | condition | 1 | 1 | Mint | 2 | 1
items
id | title |
1 | Hamlet |
2 | Romeo and Juliet |
3 | The Merchant of Venice |
listings
id | item_id | condition |
1 | 1 | Mint |
2 | 1 | Used - Good |
3 | 2 | New |
4 | 2 | Mint |
5 | 2 | Used - Poor |
6 | 3 | Used - Poor |
7 | 3 | Used - Good |
8 | 3 | Used - Good |
itemListings_variations
id | listing_id | price
1 | 1 | 20.00
2 | 1 | 10.00
3 | 1 | 5.00
4 | 2 | 6.00
5 | 2 | 5.50
6 | 3 | 2.00
7 | 4 | 12.00
8 | 5 | 3.00
9 | 6 | 9.00
例如,如果我搜索罗密欧和朱丽叶,它应该返回:
item_id | title | min_price
2 | Romeo and Juliet | 2.00
到目前为止,我有两个查询需要通过子查询和联接进行组合。我有:
SELECT
i.id AS item_id,
i.title
FROM items i
WHERE MATCH (i.title) AGAINST (:search)
此外:
试试这个-
SELECT i.id, i.title, MIN(price)
FROM items i
INNER JOIN listings l ON i.items = l.item_id
INNER JOIN itemListings_variations il ON l.id = il.listing_id
GROUP BY i.id, i.title
希望这有帮助。无需分组,因为调用min(price)将返回价格最低的行
select t1.id, title, min(price) from
(select * from items where title = 'Romeo and Juliet' ) as t1
left join listings on t1.id = listings.item_id
left join itemlistings_variations on listing_id = listings.id;
在我的测试服务器上测试。Hmm,应该改为2.00,与清单3相对应吗?是的,对不起。应该是2点。我已经更新了。谢谢。
select t1.id, title, min(price) from
(select * from items where title = 'Romeo and Juliet' ) as t1
left join listings on t1.id = listings.item_id
left join itemlistings_variations on listing_id = listings.id;