SQL,选择另一个表中同一组中的2列

时间:2017-11-07 17:41:18

标签: mysql

我有两张桌子作为父母和狗,我被要求

  

" JOIN表父母和狗,以及选择具有相同毛发类型的父母和孩子。只显示一次"

我真的不知道该怎么做

表1:父母(父母,孩子)

('abraham', 'barack')
('abraham', 'clinton')
('delano', 'herbert')
('eisenhower', 'fillmore')
('fillmore', 'abraham')
('fillmore', 'delano')
('fillmore', 'grover')

表2:狗(名字,毛皮)

('abraham', 'long')
('barack', 'short')
('clinton', 'long')
('delano', 'long')
('eisenhower', 'short')
('fillmore', 'curly')
('grover', 'short')
('herbert', 'curly')

1 个答案:

答案 0 :(得分:-1)

你可以做的是:

  1. 通过连接第一个表中父列的两个表和第二个表中的name列来创建(父,毛)对
  2. 通过连接两个表来创建(子,毛)对,但这次是在子列
  3. 通过在毛发列
  4. 上加入新创建的表来创建(父,子)对
  5. 查找原始(父级,表格)列与#3
  6. 创建的表之间的交集

    SQL:

    SELECT parent, child FROM parents as C JOIN
    SELECT * FROM (SELECT A.parent, B.child
    FROM (SELECT parent, 
                 fur 
    FROM parents 
    JOIN dogs 
    ON parent=name) as A
    JOIN
    (SELECT child,
            fur
    FROM parents
    ON child=name) as B
    ON A.fur = B.fur) as D
    ON C.parent = D.parent AND C.child = D.child