2015-09-03 41 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适合我。 –