我想要PHP-mysql中的东西
我想进行一次查询,从多个表中检索几个或所有列
示例
query 1: "SELECT * FROM table1"
query 2: "SELECT * FROM table2"
query 2: "SELECT id,name FROM table3"
query 2: "SELECT num,num2 FROM table4"
依此类推如果您想添加更多内容。
我想在一个查询中组合所有这些查询。
注意:所有查询都与某些查询无关,而且如果表为空,我也不希望出现问题。
这里的任何助手都可以帮助我
答案 0 :(得分:1)
您可以使用UNION ALL语句执行此操作,但必须为每个选择指定输出列的连贯(相同)结构。例如:
SELECT (columnA1, columnA2, null, null) FROM tableA
UNION ALL
SELECT (null, null, columnB1, columnB2) FROM tableB
等等。
答案 1 :(得分:1)
您可以使用UNION,但为此所有查询必须在select中具有相同数量的collumns。你可以通过添加虚拟值来解决它,如下所示:SELECT col1,col2,''as dummy
编辑: 你不能使用*如果表没有相同数量的collumns。你能做的是:
假设你的table1有3个cols而table2只有2个cols。 您将执行以下操作:
select col1,col2, col3 from table1
UNION
select col1,col2, '' from table2
答案 2 :(得分:0)
您需要一种方法将数据连接在一起,例如两个表中存在的列,每个表都是通用的
例如住宿的住宿数据库
<强> Accomodation_table 强> Accomodation_ID | Accomodation_Name
学生表 Student_ID | Student_Name | Accomodation_ID
Accomodation_ID是公共字段
查询看起来像这样
Select a.Accomodation_Name, b.student_name
from Accomodation_table a, Student_Table b
where a.Accomodation_ID = b.Accomodation_ID
答案 3 :(得分:0)
取决于您希望如何组合这些表。您很可能需要加入:
请参阅:http://www.w3schools.com/sql/sql_join.asp
如果您只想将它们显示为具有相同列数的一个表,您可以检查 UNION 运算符:
答案 4 :(得分:0)
如果表之间存在无关系,那么您实际上是要求以下
select *
from table1, table2, table3, table4
被称为笛卡尔连接,通常是要避免的。结果集中的行数将是table1中的行数* table2中的行数* table3中的行数* table4中的行数!
通常情况下,如果忘记添加表之间的关系,就会发生笛卡尔联接,但您似乎故意要这样做。