SQL使用相同的列,不同的表,不同的值进行连接

时间:2012-06-18 08:49:43

标签: mysql sql join inner-join

我有一些我想加入的桌子。

我只是不知道如何做我需要的方法,这有点难以解释所以我会告诉你到目前为止的查询:

SELECT  exp_channel_data.field_id_102,
        exp_channel_data.field_id_104,
        exp_channel_data.field_id_126,
        exp_channels.deft_status
FROM exp_channel_data
  INNER JOIN exp_channels
    ON exp_channels.channel_id = exp_channel_data.channel_id
  INNER JOIN exp_channel_titles
    ON exp_channels.channel_id = exp_channel_titles.channel_id
WHERE exp_channels.channel_id = 18
AND exp_channel_titles.channel_id = 19

不起作用的位是AND exp_channel_titles.channel_id = 19

问题是我得到0结果集。但我知道两列都有数据。虽然它们是完全独立的数据集。

  

exp_channels

包含所有数据,如日,时间,价格等

  

exp_channel_titles

包含所有标题信息

但我需要将两者结合在一起,这样我才能得到一个结果集:

“标题,日,老师,时间”等

所以我只是想知道是否有人有解决方法如何做到这一点?

谢谢!

1 个答案:

答案 0 :(得分:2)

因为您正在使用内部联接,所以一行的所有channel_id都应该相同。

您的意思是OR吗?

SELECT  exp_channel_data.field_id_102,
        exp_channel_data.field_id_104,
        exp_channel_data.field_id_126,
        exp_channels.deft_status
FROM exp_channel_data
  INNER JOIN exp_channels
    ON exp_channels.channel_id = exp_channel_data.channel_id
  INNER JOIN exp_channel_titles
    ON exp_channels.channel_id = exp_channel_titles.channel_id
WHERE exp_channels.channel_id = 18
OR exp_channel_titles.channel_id = 19

或者您可以使用IN

WHERE exp_channels.channel_id IN (18, 19)