【问题标题】:Merge one table field that is email in three tables将一个表字段合并为三个表中的电子邮件
【发布时间】:2014-01-09 04:30:45
【问题描述】:

我想要一个查询来获得合并一个字段的结果,来自同一数据库的三个不同表中的电子邮件,我该怎么做?

下面是我的代码

SELECT * FROM luckydraw_weekone 
LEFT JOIN luckydraw_weektwo ON luckydraw_weekone.id = luckydraw_weektwo.id 
LEFT JOIN participants ON luckydraw_weekone.id = participants.id;

谢谢

【问题讨论】:

  • 也许你应该使用正确的标签。这不是 PHP
  • 澄清一下,您是说电子邮件存储在所有三个表中,并且您只想获取电子邮件作为此查询的结果吗?
  • 也许这个SELECT * FROM luckydraw_weekone LEFT JOIN luckydraw_weektwo ON luckydraw_weekone.email = luckydraw_weektwo.email LEFT JOIN participants ON luckydraw_weekone.email= participants.email;
  • 我可以垂直显示结果吗?

标签: mysql sql select union group-concat


【解决方案1】:
$query = "SELECT table_names.column_names FROM luckydraw_weekone 
LEFT JOIN luckydraw_weektwo ON luckydraw_weekone.id = luckydraw_weektwo.id 
LEFT JOIN participants ON luckydraw_weekone.id = participants.id";

您的代码对我来说看起来不错。我通常使用所需的列名而不是 * 。如果不起作用,请尝试或分享更多代码。

【讨论】:

  • 您可以为此使用 GROUP_CONCAT。 $query = "SELECT GROUP_CONCAT(table_names.column_names SEPERATOR ',') FROM luckydraw_weekone LEFT JOIN luckydraw_weektwo ON luckydraw_weekone.id = luckydraw_weektwo.id LEFT JOIN participants ON luckydraw_weekone.id = participants.id";
  • SELECT GROUP_CONCAT(luckydraw_weekone.Email,luckydraw_weektwo.Email,participants.Email, SEPERATOR ',') FROM luckydraw_weekone 左加入 luckydraw_weektwo ON luckydraw_weekone.id = luckydraw_weektwo.id 左加入参加 luckydraw_weekone.id = 参与者.id
  • 您必须像这样为每个列名称添加 GROUP_CONCAT - $query = "SELECT GROUP_CONCAT(luckydraw_weekone.Email), GROUP_CONCAT(luckydraw_weektwo.Email), GROUP_CONCAT(participants.Email) FROM luckydraw_weekone LEFT JOIN luckydraw_weektwo ON luckydraw_weekone.id = luckydraw_weektwo.id LEFT JOIN participants ON luckydraw_weekone.id = participants.id"; 立即尝试。
  • 我还有一件事要问,我有一个注册用户表,其中包含注册用户的电子邮件,我想检查以上 3 个表中的所有电子邮件是否存在于用户表中跨度>
  • 我还有一件事要问,我有一个注册用户表,其中包含注册用户的电子邮件,我想检查以上 3 个表中的所有电子邮件是否存在于用户表中跨度>
【解决方案2】:

你使用 * 所以它输出 id 为三列,如果你只需要一列中的 id

SELECT a.column_names FROM luckydraw_weekone a
LEFT JOIN luckydraw_weektwo b ON a.id = b.id 
LEFT JOIN participants c ON b.id = c.id

使用别名更容易阅读

【讨论】:

    【解决方案3】:
    $query = "SELECT GROUP_CONCAT( luckydraw_weekone.Email),GROUP_CONCAT(luckydraw_weektwo.Email), GROUP_CONCAT(participants.Email) FROM luckydraw_weekone LEFT JOIN luckydraw_weektwo ON luckydraw_weekone.id = luckydraw_weektwo.id LEFT JOIN participants ON luckydraw_weekone.id = participants.id";
    $qry_result = mysql_query($query) or die(mysql_error()); 
    $display_string = "<table border=\"1\">"; 
    while($row = mysql_fetch_array($qry_result)){
     $display_string .= "<td>$row[0]</td>"; 
     $display_string .= "<td>$row[1]</td>"; 
     $display_string .= "<td>$row[2]</td>"; 
     $display_string .= "</tr>"; 
     $query2 = "SELECT * FROM users WHERE mail='.$row[0].' OR mail='.$row[1].' OR mail='.$row[2].'";
     $qry_result2 = mysql_query($query2) or die(mysql_error()); 
     $display_string_user = "<table border=\"1\">"; 
     while($row2 = mysql_fetch_array($qry_result2)){ 
     $display_string_user .= "<td>$row[0]</td>"; 
     $display_string_user .= "<td>$row[1]</td>"; 
     // and all details you want to add
     $display_string_user .= "</tr>"; 
     }
     } 
     $display_string .= "</table>"; 
     $display_string_user .= "</table>"; 
     echo $display_string;
     echo $display_string_user;
    

    【讨论】:

      【解决方案4】:

      你给了使用UNION而不是JOIN

      SELECT email FROM luckydraw_weekone
      UNION 
      SELECT email FROM luckydraw_weektwo
      UNION 
      SELECT email FROM participants
      

      如果您只想在一个字段中使用以下查询:

      SELECT GROUP_CONCAT(DISTINCT email) 
      FROM (SELECT email FROM luckydraw_weekone
            UNION 
            SELECT email FROM luckydraw_weektwo
            UNION 
            SELECT email FROM participants
      ) AS A
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-27
        • 2017-10-06
        • 1970-01-01
        • 2022-01-22
        • 2013-03-19
        • 1970-01-01
        • 2014-01-27
        • 2020-11-26
        相关资源
        最近更新 更多