我想从多个数据输出数据,每个表的输出都不同。
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 :(得分:0)
您需要更改您的查询。我假设album
,picture
和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'
具有相同的结构,否则您需要匹配列。
并检查php中的列类型
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';
}
}
{{1}}