2013-03-08 159 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