我正在使用php从数据库查询当前10个独立表中的每一个的一条信息。使用多个查询的问题是,在访问使用所有这些信息的网页时,它非常慢。当由于WHERE ...语句而不存在其中一个值时,我似乎无法获得我想要的所有信息。
例如,我的单个查询都采用以下格式:
SELECT eval_id FROM eval WHERE user_id = $id;
我的多表查询如下所示:
SELECT eval_id,list_id,tab_id
FROM eval,list,tab
WHERE eval.user_id = $id
AND list.user_id = $id
AND tab.user_id = $id;
我尝试将这些查询合并到一个大型查询中,但是当表的user_id不存在时,WHERE ...语句中的比较会搞砸整个查询。有谁知道检索所有这些信息的最佳方法?
假设这些表是" eval,list和tab,"他们的身份分别是* _id。即使eval不包含user_id = $ id的结果,查询此内容的最佳方法是什么?
答案 0 :(得分:0)
SELECT eval.eval_id, list.list_id
FROM user
JOIN eval ON eval.user_id = user.id
JOIN list ON list.user_id = user.id
WHERE user.id = $id
希望它可以帮到你。
更新:想想其他解决方案:
SELECT eval_id as id, "eval" as table
FROM eval WHERE eval.user_id = $id
UNION
SELECT list_id as id, "list" as table
FROM list WHERE list.user_id = $id
答案 1 :(得分:0)
您可以在WHERE
声明中使用以下任一查询:
AND TABLE.TABLE_id <> null //null
AND TABLE.TABLE_id <> 'null' //String null
AND TABLE.TABLE_id <> '' //empty String
检查您的数据库以查看您的id
返回的空值类型,并选择与其匹配的添加项。
此外,虽然LEFT JOIN
可能在查询中看起来更好,但它们并不总是更快,所以请确保在使用之前对其进行测试。