2013-03-08 156 views
0

我有一个简单的mysql数据库,其中用户有自己的事件表和被邀请的事件表。Mysql查询返回错误的行

User-->>Own events (user_id is foreign key) 
User and Own events-->>Invited Events(user_id is foreign key, event id is foreign key) 

我想从Invited Events得到OWN EVENT细节,其中user_id等于某一数量

例子:

enter image description here

我尝试:

$user_id = $_POST["user_id"]; 
$stmt = $mysqli->query("SELECT A1.event_id,A1.root_folder,A1.event_name,A1.date,A1.location,A2.user_id FROM OWN_EVENTS A1, INVITED_EVENTS A2 WHERE A2.user_id=$user_id"); 

$rows = array(); 
while($r = mysqli_fetch_assoc($stmt)) { 
    $rows[]=$r; 
} 

这suppo sed给我(一行)event_id=3其中user_id=58的事件详细信息,但是这会返回OWN_EVENTS表中的所有行。

我在做什么错?

回答

3

当前,您查询返回笛卡尔积。

您需要告诉优化器两个表是如何相互连接的。

SELECT A1.event_id,A1.root_folder,A1.event_name,A1.date,A1.location,A2.user_id 
FROM OWN_EVENTS A1 
     INNER JOIN INVITED_EVENTS A2 
      ON A1.columnName = A2.columnsName // columns that defines their relationship 
WHERE A2.user_id=$user_id 

为了进一步获得更多的知识有关加入,请访问以下链接:

+0

感谢快速回答这个工作得很好,我想我需要更多地了解加入在SQL中。 – 2013-03-08 15:31:57

+0

@MordFustang看到我更新的答案。 – 2013-03-08 15:32:22