[英]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運算符:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.