0

我有一个简单的 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)

我想从等于某个数字的地方获取OWN EVENT详细信息Invited Eventsuser_id

例子:

在此处输入图像描述

我尝试:

$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;
}

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

我究竟做错了什么 ?

4

1 回答 1

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

要进一步了解有关联接的更多信息,请访问以下链接:

于 2013-03-08T15:26:34.293 回答