2013-07-11 231 views
0

我有兩個簡單的querys,但我需要一些幫助來加入他們的一個結果加入兩個MySQL查詢

$query="SELECT * FROM USLUGE WHERE marka='1'"; 

而第二個查詢

$query2="SELECT * FROM USLUGE WHERE marka='2'"; 

我知道從$查詢結果給所有從表USLUGE其中marka = 1,結果$查詢2將給我所有從表USLUGE瓦特marka = 2

但我需要在一個查詢中加入這兩個查詢,並且當我做一個WHILE循環時,以給我所有的結果m兩個查詢,而不是兩個不同的WHILE循環,只有一個WHILE循環兩個查詢的結果?

是可能的,如實施例I給出一個這樣簡單的查詢以瞭解:)

+0

更好是有這兩個表之間 –

+0

任何關係是存在的任何伯外鍵定義。通過加入你的意思就像內部連接權加入等?或者加入你的意思是結合2個結果? –

+0

我會編輯我的問題 –

回答

1

只要表結構是相同的(更具體地,如果這兩個查詢返回相同的數量的字段,並且在同一數據類型的),你可以使用SQL UNION關鍵字,例如:

SELECT id, name FROM table1 
UNION 
SELECT id, name FROM table2 

注意的是,如果返回的列或數據類型的數量不匹配,則試圖執行查詢將導致錯誤,例如,

SELECT id, name, comment FROM table1 
UNION 
SELECT id, name FROM table2 

不是工作並將導致一個錯誤。

編輯:與重寫問題,WHERE子句中使用ORIN是一個更好的解決方案:

SELECT * FROM USLUGE WHERE marka='1' OR marka='2' 

SELECT * FROM USLUGE WHERE marka IN ('1', '2'); 
0

你可以使用union

SELECT * FROM USLUGE WHERE marka='1' 

UNION 

SELECT * FROM USLUGE WHERE marka='2' 

但是不應該使用SELECT *請改爲輸入列名稱

從表中讀取的數據越多,查詢將變得越慢。它增加了磁盤操作所需的時間。另外,當數據庫服務器與Web服務器分開時,由於數據必須在服務器之間傳輸,因此您的網絡延遲時間會更長。 總是指定在執行SELECT時需要哪些列是個好習慣。

+0

是的,txanks,它的工作 –

+0

工程像魅力,我知道*,我只是添加了一個簡單的查詢作爲例子,txanks :) –

0

(如現在編輯)的問題是指只有一個表在這種情況下

SELECT * FROM USLUGE WHERE marka='1' OR marka='2' 

將比做UNION