【问题标题】:Mysql query returns wrong rowsMysql查询返回错误的行
【发布时间】:2013-03-08 15:24:29
【问题描述】:

我有一个简单的 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 等于某个数字

例子:

我试试:

$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=3 的(一行)事件详细信息,其中user_id=58 但这会返回OWN_EVENTS 表中的所有行。

我做错了什么?

【问题讨论】:

    标签: php mysql sql phpmyadmin


    【解决方案1】:

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

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

    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
    

    如需进一步了解联接,请访问以下链接:

    【讨论】:

    • 感谢快速回答,效果很好,我想我需要了解更多关于 sql 中的连接的信息。
    猜你喜欢
    • 2014-02-15
    • 2012-03-20
    • 1970-01-01
    • 2017-05-29
    • 1970-01-01
    • 1970-01-01
    • 2013-11-07
    • 2023-03-21
    • 1970-01-01
    相关资源
    最近更新 更多