简体   繁体   English

MySQL查询返回错误的行

[英]Mysql query returns wrong rows

I have a simple mysql database where user has its own events table and invited events table. 我有一个简单的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)

I want to get OWN EVENT details from Invited Events where user_id is equal to some number 我想从其中user_id等于某个数字的Invited Events中获得OWN EVENT详细信息

Example: 例:

在此处输入图片说明

I try: 我尝试:

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

This supposed give me (one row) event details of event_id=3 where user_id=58 but this returns all the rows in the OWN_EVENTS table. 这应该给我(一行) event_id=3事件详细信息,其中user_id=58但这将返回OWN_EVENTS表中的所有行。

What am I doing wrong ? 我究竟做错了什么 ?

Currently, you query returns cartesian product. 当前,您查询返回的笛卡尔积。

You need to tell the optimizer how the two tables are connected with each other. 您需要告诉优化器两个表如何相互连接。

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

To further gain more knowledge about joins, kindly visit the link below: 要进一步获得有关联接的知识,请访问以下链接:

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM