2015-09-03 51 views
0

我想從多個數據輸出數據,其中每個表格都有不同的輸出。檢查每行是哪個表格

SELECT * 
FROM subscriptions, albums, videos, pictures 
WHERE subscriptions.site = '$user' 
AND (subscriptions.site = albums.site 
    OR subscriptions.site = videos.site 
    OR subscriptions.site = pictures.site) 

這是我認爲它應該輸出。

while($item = $resultA->fetch_assoc()) { 

    if(album){ 
    echo 'album'; 
    } 
    if(videos){ 
    echo 'video'; 
    }  
    if(pictures){ 
    echo 'picture'; 
    } 
} 

回答

0

您需要更改您的查詢litle位。我假設video,albumpicture有相同的結構,其他明智的,你需要匹配的列。

而且在你的PHP

SELECT *, 'album' as type 
FROM subscriptions s 
LEFT JOIN albums a 
     on s.site = a.site 
WHERE subscriptions.site = '$user' 

union 

SELECT *, 'videos' as type 
FROM subscriptions s 
LEFT JOIN videos v 
     on s.site = v.site 
WHERE subscriptions.site = '$user' 

union 

SELECT *, 'pictures' as type 
FROM subscriptions s 
LEFT JOIN pictures p 
     on s.site = p.site 
WHERE subscriptions.site = '$user' 

檢查列的類型,但如果你結構有很大的不同,你可以把所有列。或者選擇一個與你相關的。

SELECT s.*, p.*, v.*, a.* 
FROM subscriptions s 
LEFT JOIN pictures p 
     on s.site = p.site 
LEFT JOIN videos v 
     on s.site = v.site 
LEFT JOIN albums a 
     on s.site = a.site 
WHERE subscriptions.site = '$user' 

在這種情況下,你必須把多個檢查是否column is null檢測的站點類型,你處理。

這是我的猜想

我需要知道你的表架構使用右場會員。您必須將字段重命名爲查詢中唯一。

在這種情況下

a.site as "a.site"

while($item = $resultA->fetch_assoc()) { 
    if ($item."a.site" is not null) { 
     echo 'album'; 
    } 
    else if ($item."v.site" is not null) { 
     echo 'video';  
    } 
    else 
     echo 'picture'; 
    } 
} 
+0

謝謝你,請你更多地討論如何將我發現哪個網站鍵入它是什麼? –

+0

依賴,你需要幫助的SQL或閱讀PHP部分?如果是sql,你更喜歡選項1還是選項2?如果你提供一些樣本數據和模式,會更好。像[THIS](http://sqlfiddle.com/#!4/85c4e/6) –

+0

該sql的作品,但現在我需要幫助的PHP部分請。而選項2適合我。 –