2012-01-11 79 views
0

那麼我目前正在嘗試在SQL中執行一個查詢,但是我想在同一個查詢中加入兩個表。嗯,我在使用PHP驗證碼:在一個SQL查詢中加入2個不同的表

SELECT * FROM table1, table1 
WHERE value1 LIKE '$q%' 
OR value2 LIKE '$q%' 
LIMIT 10 

Table 1和表2是不同的表,表1不具有值2列,表2不具有值1列。

我的想法是在PHP中檢查行是否有特定的列(只有table1有),那麼它將返回table1所具有的列的值。如果它檢測到該行具有table2特定列,它將返回表2所具有的列的值。

甚至有一種方法可以做到這一點?

+0

這兩張表之間有什麼關係?此外,這種方法似乎很hacky。你試圖解決的核心問題是什麼?可能有更好的方法。 – JohnFx 2012-01-11 01:33:14

回答

3

由於這兩個表是不相關的,唯一有意義的方式來獲得在同一個查詢結果是用UNION

SELECT * FROM table1 WHERE value1 LIKE '$q%' 
UNION SELECT * FROM table2 WHERE value2 LIKE '$q%' 

然而,這可能是你正在做的事情錯了一個標誌。

+0

確實。如果兩個表在設計上是相同的,那麼大多數情況下,只需簡單地將它們結合起來就會更好。 – kba 2012-01-11 01:34:16

0

如果你不確定如何加入的作品,我建議你嘗試做一個

SELECT * FROM table1, table2; 

,看看它甚至有意義申請自己的極限(WHERE),以該結果。