mySQL SELECT在另一个表中使用外键

时间:2012-03-26 00:24:52

标签: mysql sql pdo foreign-keys

我很难找到这个答案,所以我希望你的家伙可以帮助我。

我有两张桌子:

event_list ,列'id','name','date'和 event_default ,其中一列'default_id'是外键event_list('id')

这个想法是一次只能有一个事件是默认的,因此event_default只能有一个值(event_list中事件的id)。

我需要一个SELECT语句来获取当前默认事件的event_list数据。但我想在一个SELECT语句中这样做,我认为我可以做,而不是两个。如果有帮助,我正在使用PDO框架。

成功!谢谢。我最终使用了:

$this->connection->query('SELECT * FROM event_list el JOIN event_default ef ON el.id = ef.default_id');

2 个答案:

答案 0 :(得分:4)

如果我没有得到错误的要求,就可以这样做:

select el.data from event_list el
join event_default ef on el.id = ef.default_id

我假设表event_default只包含一行,您可以在其中指定默认事件。因此,在加入event_list表后,您只会获得一行(如果idevent_list的PK)。

答案 1 :(得分:0)

另一种解决方案是使用参数WHERE代替JOINLEFT JOINRIGHT JOIN等):

SELECT el.data 
    FROM event_list el, event_default ef 
    WHERE el.id = ef.default_id;

如果有两个以上的表:

SELECT t1.field1, t2.field6, t2.field7
    FROM table1 t1, table2 t2, table3 t3 
    WHERE t1.field2 = t2.field3 AND t1.field4=t3.field5;

其中有三个表:table1,其中包含字段/列field1field2field4table2,其中包含字段field3field6table3,其中包含字段field5field7。如有必要,可以在FROM部分中使用相同的表名称,然后选择任何字段。

但是JOIN要快一点,建议使用。