我有一张桌子,上面有艺术家,另一张桌子上有印刷品。我想从表Artist中获得所有内容,而仅从表Prints中获得print_id。想象一下,如果我有3位艺术家A,B和C。想象一下,如果艺术家A和B参加了版画1和2。艺术家C参加了版画2和3。我想要的是关于艺术家A和B的信息,因为他们参加了打印1以及他们参与的其他打印(在这种情况下,打印2)。
餐桌艺术家:
艺术家A-巴西。
艺术家B-美国。
艺术家C-比利时。
表格打印:
1-Wave。
2-地图。
3-晚。
预期结果:
艺术家A-巴西-1。
艺术家A-巴西-2。
艺术家B-美国-1。
艺术家B-美国-2。
我正在尝试这样,但出现一些错误...
SELECT
*
FROM
(SELECT DISTINCT
artist.*
,print.print_id
FROM
artist
JOIN print ON artist.artist_id = print.artist_id
WHERE
print.print_id = 1
INTERSECT
SELECT DISTINCT
artist.*
,print.print_id
FROM
artist JOIN print ON artist.artist_id = print.artist_id
)
最佳答案
您可以尝试对具有的表(选择)使用联接
SELECT * FROM (
SELECT DISTINCT
Artist.*,
Print.print_id
FROM Artist
JOIN Print
ON Artist.artist_id = Print.artist_id
WHERE Print.print_id=1
) as T1
JOIN
(
SELECT DISTINCT
Artist.*,
Print.print_id
FROM Artist
JOIN Print ON Artist.artist_id = Print.artist_id
) as T2
ON T1.artist_id = T2.artist_id
本质上,选择位于表中,而INTERSESCT对应于具有两个表/选择的联合键绑定的INNER JOIN