【问题标题】:SELECT Multiple Tables选择多个表
【发布时间】:2015-07-10 00:54:11
【问题描述】:

我被困在一段不太理解的代码中。 我有几个名称不同但字段相同的表,但这些表是独立的 类似的东西:

表1

  • 身份证
  • 用户
  • 标题

表2

  • 身份证
  • 用户
  • 标题

我需要从两个表中获取相同的查询数据,但我失败了,我尝试使用 INNER JOIN、UNION ALL,但不知道,它误用了。 现在我有这个:

$mysites = $db->QueryFetchArrayAll("
select * 
FROM table1,table2
where table1.user = table2.user AND 
table1.user = 1");

foreach($mysites as $mysite){
echo $QUERY['title'];
}

但返回了这个:

title1.table1

title2.table1

我喜欢这样:

title1.table1

title2.table1

title1.table2

title2.table2

问候和感谢

【问题讨论】:

  • 你试过select table1.*, table2.*吗?
  • 什么是$mysites$QUERY?它们被定义了吗?请注意,大小写对 PHP 变量很重要。你用的是什么类?
  • 嗨,感谢您的评论,我试过这个(选择 table1.*,table2.*),但它给出了相同的结果。我已经更正了变量 $mysites 还有什么想法吗?

标签: php mysql


【解决方案1】:

您可以像这样使用关键字UNION

  SELECT * FROM table1 UNION SELECT * FROM table2

此查询将从table1 中选择所有内容并将结果与​​来自table2 的结果合并。请注意,您必须从两个表中选择相同数量的列。此外,列名和数据类型将根据第一个表分配。

如果要保留重复项,请添加关键字ALL

  SELECT * FROM table1 UNION ALL SELECT * FROM table2

【讨论】:

    【解决方案2】:

    这个问题很不清楚.....

    每个用户在每个表中的 ID 是否相同?如果是这样,INNERJOIN 会有所帮助

    SELECT t1.*, t2.* 
    
    FROM table1.t1 
    
    INNER JOIN table2.t2 
    
    ON t1.id = t2.id 
    
    WHERE t1.user = "1"
    

    (如果数据可能丢失,请将 INNER JOIN 更改为 LEFT JOIN)

    如果不是这样,为什么不把一张表中的数据放到另一张表中,只用一张表把所有的数据放在里面呢?

    【讨论】:

    • 这不返回任何值...每个表处理大量数据,需要将它们分隔在 2 个不同的表中。感谢您的回答
    猜你喜欢
    • 2013-10-12
    • 2013-11-08
    • 2011-03-04
    • 1970-01-01
    • 2019-03-05
    • 2011-02-26
    • 2013-11-12
    • 2013-01-25
    相关资源
    最近更新 更多