2014-01-21 76 views
-1

我有一個數據庫與2表:研究人員和學生。尋找匹配:相同的變量,不同的表

這兩個表都有一個名爲lastname的變量。

我想要做的是在兩個表中查找輸入的姓氏。

當IM輸入命令:

SELECT lastname 
    FROM researchers 
    OR students 
    WHERE lastname = $certain_variable 

我會得到error #105 2讓我意識到變量是模棱兩可的。

我該如何解決這個問題?

+0

這兩個表或任一表? – tmsimont

+0

該變量將是一個用戶名,我想選擇姓氏。這裏的問題是用戶名和姓氏存儲在2個表中。 – Dylan

回答

0

編輯:刪除LEFT JOIN答案澄清後的問題。

你可以使用複合查詢:

SELECT all_lastnames.lastname FROM (
    SELECT lastname FROM students 
    UNION 
    SELECT lastname FROM researchers 
) all_lastnames 
WHERE lastname = $certain_variable 

基本上是什麼做的是兩個表中選擇姓成的別名是all_lastnames 1「臨時表」(由UNION創建)。然後,您可以在all_lastnames

+0

這對我來說很有效,但只有當姓氏在研究人員表中。輸入學生的姓氏導致顯示0個匹配項。 – Dylan

+0

你說「我想要做的是在這兩個表格中查找輸入的姓氏」 - 你的意思是說「我想要做的是在任一表格中查找輸入的姓氏?」 – tmsimont

+0

正好。對不起,混淆 – Dylan

0

您可以使用TABLENAME.LastName,而不是這會消除歧義。

0

運行SELECT如果你有共同姓氏的之間的兩個表使用

SELECT a.lastname FROM 
researches AS a 
LEFT JOIN students AS b ON (a.lastname=b.lastname) 
WHERE a.lastname = '$var' 

你需要告訴查詢名字你想要的東西(從研究或學生) 是爲什麼你需要指定tablename或tablealias.field。

如果你的表沒有一個共同的姓氏值,並且要 搜索他們看到你發現姓氏可以使用UNION:

SELECT 'found researches', lastname FROM researches WHERE lastname = '$var' 
UNION 
SELECT 'found student', lastname FROM students WHERE lastname = '$var' 

確保你逃避是$ var。

相關問題