【问题标题】:mysql query result issue with joinmysql查询结果问题与join
【发布时间】:2019-12-23 14:38:33
【问题描述】:

我有多个表,因为 table_1 有 id、p_code、profile_status、name 和 table_2 有 id、p_code、avaablity 和 table_3 有 id、p_code、状态... 如何从所有表中获取所有记录取决于 p_code。 table_2 和 table_3 的记录很少。如果 p_code 不在 table_2 和 table_3 中,则在结果中回显“否”。 目前我正在使用我的查询如下

select t.id, t.p_code,t.name,t.num_rooms, t.profile_status, t.distance FROM (  
     (        SELECT id , p_code, profile_status, name,num_rooms, 3956 * 2 *  ASIN(SQRT( POWER(SIN(($origLatAirport - latitude)*pi()/180/2),2)
      +COS($origLatAirport*pi()/180 )*COS(latitude*pi()/180)
      *POWER(SIN(($origLonAirport-longitude)*pi()/180/2),2))) 
      as distance FROM property WHERE   profile_status=1 having distance < ".$dist." )  ) as t 

如何添加 table_2 和 table_3 并获取结果。 请尽快回复。我被困在这里了。

【问题讨论】:

  • 在您的代码中看不到任何 JOIN。

标签: mysql


【解决方案1】:

在您的查询中,您正在执行CROSS JOIN,而您想要的可能是INNER JOIN

在 MySQL 中,CROSS JOIN 的行为类似于 JOININNER JOIN,但不使用任何条件。 CROSS JOIN 返回来自user 的所有行乘以来自user_inbox 的所有行 - 对于每个用户,您都会获得所有用户的收件箱。

您应该为JOIN 语句指定条件。

 $sql_alt = mysql_query(
    "select i.*,u.images, u.firstname, u.lastname 
         from user_inbox i INNER JOIN user u ON i.to_id = u.user_id
         where i.to_id = '$user_id'");

另外,主键和外键使用相同的名称也是一个好习惯,所以我认为你应该在user_inbox 表中使用user_iduser_id_to 而不是to_id。这当然不是绝对必要的。

【讨论】:

    猜你喜欢
    • 2017-09-27
    • 1970-01-01
    • 1970-01-01
    • 2016-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-16
    相关资源
    最近更新 更多