我想进行查询,从几个表中检索多个列

时间:2011-05-16 08:51:27

标签: php mysql

我想要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"

依此类推如果您想添加更多内容。

我想在一个查询中组合所有这些查询。

注意:所有查询都与某些查询无关,而且如果表为空,我也不希望出现问题。

这里的任何助手都可以帮助我

5 个答案:

答案 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 运算符:

请参阅:http://www.w3schools.com/sql/sql_union.asp

答案 4 :(得分:0)

如果表之间存在关系,那么您实际上是要求以下

select *
from table1, table2, table3, table4

被称为笛卡尔连接,通常是要避免的。结果集中的行数将是table1中的行数* table2中的行数* table3中的行数* table4中的行数!

通常情况下,如果忘记添加表之间的关系,就会发生笛卡尔联接,但您似乎故意要这样做。