我在想這裏的某個人是否可以幫我重述這個,所以我只從works
得到結果if works
。 id
+ prod_instruments_id
+ number
全部都在works_instruments
?Mysql JOIN:只有在多個連接匹配的行匹配時纔會選擇
這是我有:
SELECT
`works`.`id`,
`composers`.`first_name`
FROM `works`
JOIN `composers` ON `works`.`composers_id` = `composers`.`id`
JOIN `works_instruments` ON `works`.`id` = `works_instruments`.`works_id`
WHERE
(true)
AND `composers`.`full_name` LIKE '%karl friedrich abel%'
AND `works_instruments`.`prod_dd_instruments_id` = 15
AND `works_instruments`.`number` >= 1
AND `works_instruments`.`prod_dd_instruments_id` = 5
AND `works_instruments`.`number` >= 1
AND `works`.`work_no` <> '001' AND `works`.`short_title` NOT LIKE '%*Works'
ORDER BY
`composers`.`last_name`,
`composers`.`first_name`,
`works`.`full_title`
LIMIT 0,50
眼下這種不返回任何結果。 但是這並不:
SELECT
`works`.`id`,
`composers`.`first_name`
FROM `works`
JOIN `composers` ON `works`.`composers_id` = `composers`.`id`
JOIN `works_instruments` ON `works`.`id` = `works_instruments`.`works_id`
WHERE
(true)
AND `composers`.`full_name` LIKE '%karl friedrich abel%'
AND `works_instruments`.`prod_dd_instruments_id` = 15
AND `works_instruments`.`number` >= 1
AND `works`.`work_no` <> '001' AND `works`.`short_title` NOT LIKE '%*Works'
ORDER BY
`composers`.`last_name`,
`composers`.`first_name`,
`works`.`full_title`
LIMIT 0,50
而且這樣做:
SELECT
`works`.`id`,
`composers`.`first_name`
FROM `works`
JOIN `composers` ON `works`.`composers_id` = `composers`.`id`
JOIN `works_instruments` ON `works`.`id` = `works_instruments`.`works_id`
WHERE
(true)
AND `composers`.`full_name` LIKE '%karl friedrich abel%'
AND `works_instruments`.`prod_dd_instruments_id` = 5
AND `works_instruments`.`number` >= 1
AND `works`.`work_no` <> '001' AND `works`.`short_title` NOT LIKE '%*Works'
ORDER BY
`composers`.`last_name`,
`composers`.`first_name`,
`works`.`full_title`
LIMIT 0,50
你能幫忙嗎?
我也嘗試過左,右加盟,但仍然是一個空的結果(我只在這裏貼左):
SELECT
`works`.`id`,
`composers`.`first_name`
FROM `works`
JOIN `composers` ON `works`.`composers_id` = `composers`.`id`
LEFT JOIN `works_instruments` ON `works`.`id` = `works_instruments`.`works_id`
WHERE
(true)
AND `composers`.`full_name` LIKE '%karl friedrich abel%'
AND `works_instruments`.`prod_dd_instruments_id` = 15
AND `works_instruments`.`number` >= 1
AND `works_instruments`.`prod_dd_instruments_id` = 5
AND `works_instruments`.`number` >= 1
AND `works`.`work_no` <> '001' AND `works`.`short_title` NOT LIKE '%*Works'
ORDER BY
`composers`.`last_name`,
`composers`.`first_name`,
`works`.`full_title`
LIMIT 0,50
難道works_instruments
沒有潮頭ID的問題? 見的works_instruments
這裏截圖: Screenshot
而不是圖片,在sqlfiddle.com上設置一些東西會讓人們更容易得到答案。 – miken32
ok - 謝謝。下次我會記住這一點。以前沒有嘗試過 - 但我會找出答案。 –
非常簡單,只需使用模式窗口來創建表格並插入一些數據,然後使用查詢窗口來運行您的查詢,並在您的問題中包含鏈接,最重要的是,它可以讓人們嘗試不同的事情,並且看看錶格的真實外觀 – miken32