【问题标题】:Unable to work with union in php mysql无法在 php mysql 中使用 union
【发布时间】:2017-01-30 09:04:57
【问题描述】:

您好朋友们正在尝试将一张表中的一列与另一张表中的列合并 但我收到错误。 这是代码

table names are table1 and table2

table1 有列名,table2 有列标题

 table1
 were
 you
 when

 table2
 how
 yes
 no

我的php和mysql代码如下

$query="SELECT name FROM table1 UNION ALL select title from table2";
$select_playlist=mysqli_query($conn,$query);
while($row=mysqli_fetch_array($select_playlist))
 {
    $title=$row['title'];
    $name=$row['name'];
    echo $title.$name;
 }

显示错误未定义索引:名称

预期输出是

 were how
 you yes
 when no

如果我删除名称并仅打印标题,则其打印为

     were
     you
     when
     how
     yes
     no

【问题讨论】:

  • 联合将两列合并为一列。因此您只能在 $row['title'] 中获取数据。如果你想使用 $row['name'] 。你应该写两个不同的查询。但是看你的编码,你需要加入两个表
  • 可能会为您提供您想要的输出的操作是 join 而不是 UNION。话虽如此,为了进行连接,您需要能够关联 name 和 title 列,以便以有意义的方式匹配它们。也许您应该发布完整的表定义。
  • 您需要一个 JOIN 而不是 UNION。对于那个连接,您需要告诉数据库在一个条件下连接,例如两个表中具有相同值的列。
  • 如果我写不同的查询我该如何使用它 mysqli_fetch
  • @verhie 我没有公共字段

标签: php mysql concatenation union


【解决方案1】:

使用这些表格无法获得您想要的输出。

您需要的是 JOIN:JOIN 将表 B 中的列附加到表 A。 UNION 将表 B 中的 ROW 附加到表 A。

要使用 JOIN,数据库需要知道哪些 ROW 属于一起,因为基本上没有表中行的隐式顺序。

表 1:

id name
1  were
2  you
3  when

表 2:

id title
1  how
2  yes
3  no

然后你可以这样做:

SELECT * FROM table1 JOIN table2 USING(`id`)

结果如下:

id name    title
1  where   how
2  you     yes
3  when    no

(DBA:请不要责怪我草率的术语——在这里谈到元组和集合会让用户感到困惑)

【讨论】:

    猜你喜欢
    • 2015-05-14
    • 2014-06-20
    • 1970-01-01
    • 2012-03-07
    • 2014-01-20
    • 1970-01-01
    • 1970-01-01
    • 2017-06-09
    • 2011-12-20
    相关资源
    最近更新 更多