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


I want to make a query, retrieve several columns from several tables

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

等等,如果你想添加更多.

我想将所有这些查询合并到一个查询中。

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

这里有任何帮手来帮助我

您可以使用 UNION ALL 语句执行此操作,但必须为每个选择指定输出列的一致(相同)结构。例如:

SELECT (columnA1, columnA2, null, null) FROM tableA
UNION ALL
SELECT (null, null, columnB1, columnB2) FROM tableB

等等。

您可以使用 UNION,但为此,所有查询在选择中必须具有相同数量的列。您可以通过添加虚拟值来像这样选择:选择 col1,col2,'' 作为虚拟人

编辑:如果表没有相同数量的列,则不能使用 *。你可以做的是:

假设您的表1有3个列,表2只有2个列。您将执行以下操作:

select col1,col2, col3 from table1
UNION
select col1,col2, '' from table2

您需要某种将数据连接在一起的方法,例如,存在于两个表中的列对于每个表都是通用的

例如住宿数据库

Accomodation_tableAccomodation_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

取决于您希望如何组合这些表。您很可能需要加入他们:

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

如果您只想将它们显示为一个具有相同列数的表,您可以检查 UNION 运算符:

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

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

select *
from table1, table2, table3, table4

这被称为笛卡尔连接,通常要避免。结果集中

的行数将是表1中的行数*表2中的行数*表3中的行数*表4中的行数!

通常,当忘记添加表之间的关系时,就会发生笛卡尔连接,但您似乎故意想要这样做。