簡體   English   中英

我想進行查詢,從幾個表中檢索多個列

[英]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,但為此所有查詢必須在select中具有相同數量的collumns。 你可以通過添加虛擬值來解決它,如下所示:SELECT col1,col2,''as dummy

編輯:你不能使用*如果表沒有相同數量的列。 你能做的是:

假設你的table1有3個cols,table2只有2個cols。 你會做以下事情:

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

如果表之間沒有關系,那么您實際上要求以下內容

select *
from table1, table2, table3, table4

這被稱為笛卡爾連接,通常是要避免的。 結果集中的行數將是table1中的行數* table2中的行數* table3中的行數* table4中的行數!

通常情況下,當一個忘記添加表之間的關系時會發生笛卡爾聯接,但您似乎故意要這樣做。

您需要的是將數據連接在一起的某種方式,例如,存在於兩個表中的列,這些列對於每個表是通用的

例如住宿的住宿數據庫

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

取決於您希望如何組合這些表。 你最有可能需要加入它們:

請參閱: http//www.w3schools.com/sql/sql_join.asp

如果您只想將它​​們顯示為具有相同列數的一個表,則可以檢查UNION運算符:

請參閱: http//www.w3schools.com/sql/sql_union.asp

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM