我在想这里的某个人是否可以帮我重述这个,所以我只从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