2012-03-25 48 views
0

我對SQL很陌生,我需要從不同的表中檢索一些屬性,但是。我正在通過搜索他們的名字搜索用戶的圖像和詳細信息。MYSQLI對多個表的SQL查詢失敗

例如:

我需要在我的結果如下屬性:

我需要從表2

從表1中的所有細節

帳戶ID和圖像

表4的路徑

我試過

SELECT table1.id table1.name table1.last_name table 2.account_id table4.path FROM table1 table 2 table4 WHERE table4.image_id = table 2.image AND table1.first_name LIKE '%tim%' AND table1.last_name LIKE '%smith%' 

我正在考慮這個spilting成多個查詢,這將解決這個問題,但是我相信這可能在一個查詢下完成?我只是不知道如何它結構法,我已經嘗試了次數,但所有查詢失敗phpmyadmin

希望有人能指出我在正確的方向?以下是我的表格示例,預先感謝!

table1 
------------ 
id (pk) 
name 
last_name 

table 2 
-------------- 
account id (pk) 
id (fk) 
image (holds image id from table 4) 

table 3 
----------------- 
account id (fk) 
image id (fk) 
date 

table 4 
-------------------- 
image id (pk) 
path 
date 

回答

2

這種嘗試:

SELECT t1.*, t2.account_id, t4.path 
    FROM table1 t1 
     INNER JOIN table2 t2 ON t2.id = t1.id 
     INNER JOIN table4 t4 ON t4.image_id = t2.image 
+0

感謝AlejoBrz,但我不得不刪除t1,因爲phpmyadmin沒有看到表,取代這些和查詢工作謝謝 – Alan 2012-03-25 17:41:34

2

所以,你必須INNER JOIN小號table1 & table2之間,和table2 & table4。在MySQL中,JOIN含蓄地表示INNER JOIN

SELECT 
    table1.id, 
    table1.name, 
    table1.last_name, 
    table2.account_id, 
    table4.path 
FROM 
    table1 
    JOIN table2 ON table1.id = table2.id 
    JOIN table4 ON table2.image = table4.image_id 
WHERE table1.name LIKE '%tim%' AND table1.last_name LIKE '%smith%' 

編輯:忘記原來的WHERE子句中添加。)

+0

喜邁克爾,感謝您的幫助,查詢執行罰款然而,返回一個空集?我剛剛檢查確定! – Alan 2012-03-25 17:33:32

+0

感謝您的幫助邁克爾,非常感謝 – Alan 2012-03-25 17:42:26