【问题标题】:Left joining two tables, multiple columns左连接两个表,多列
【发布时间】:2016-02-28 09:58:50
【问题描述】:

我需要左连接两个表:CardealersApplications

我想看看哪些发牌商收到了哪些申请。

每个应用程序都转发给三个cardealers,因此我的表结构包含这 3 列:receiver_1receiver_2receiver_3

接收者列中的 ID 与 cardealer_id 相同。

我有此代码仅适用于 ONE 和一列:

$res1 = $wpdb->get_results( " SELECT leads.*, cardealers.*
    FROM leads
    LEFT JOIN cardealers ON leads.receiver_1 = cardealers.cardealer_id
    WHERE leads.receiver_1 = cardealers.cardealer_id
    AND cardealers.cardealer_id = '". $cardealer_id ."'" );

$res2 = $wpdb->get_results( " SELECT leads.*, cardealers.*
    FROM leads
    LEFT JOIN cardealers ON leads.receiver_2 = cardealers.cardealer_id
    WHERE leads.receiver_2 = cardealers.cardealer_id
    AND cardealers.cardealer_id = '". $cardealer_id ."'" ); 

$res3 = $wpdb->get_results( " SELECT leads.*, cardealers.*
    FROM leads
    LEFT JOIN cardealers ON leads.receiver_3 = cardealers.cardealer_id
    WHERE leads.receiver_3 = cardealers.cardealer_id
    AND cardealers.cardealer_id = '". $cardealer_id ."'" );

如您所见,我做了 3 个单独的语句,它们都有效。但我想将这些组合成一个声明。

我该怎么做?

【问题讨论】:

  • 见规范化。每当您枚举列(例如,“2”以上)时,您的设计都可能出现问题。

标签: php mysql left-join


【解决方案1】:

只需继续添加表格并为其命名。

SELECT 
   leads.*, cardealers1.*, cardealers2.*, cardealers3* 
FROM leads 
LEFT JOIN cardealers as cardealers1
   ON leads.receiver_1 = cardealers1.cardealer_id 
LEFT JOIN cardealers as cardealers2
   ON leads.receiver_2 = cardealers2.cardealer_id
LEFT JOIN cardealers as cardealers3
   ON leads.receiver_3 = cardealers3.cardealer_id
WHERE 
   leads.receiver_1 = cardealers1.cardealer_id 
   AND leads.receiver_2 = cardealers2.cardealer_id 
   AND leads.receiver_3 = cardealers3.cardealer_id 
   AND cardealers.cardealer_id = '". $cardealer_id ."'

编辑:最好为每个cardealers的列提供别名

【讨论】:

  • 嗨@Tah Tatsumoto 感谢您的快速回复。它不能马上工作。我根据 POST 请求进行查询。其中 $cardealer_id 对应 ID。在代码的最后一行,它说: cardealers.cardealer_id = '". $cardealer_id 。" 1.这前面不是少了一个AND吗? 2. 我需要复制这个吗?比如 cardealers1.cardealer_id = '". $cardealer_id ."', cardealers2.cardealer_id = '". $cardealer_id ."' 等等?
猜你喜欢
  • 2022-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-02
  • 1970-01-01
相关资源
最近更新 更多