这是我的问题:即使第二个表没有对应条目,也从2个数据库表获取查询结果。即使在第二个表没有对应条目的情况下也能从2个数据库表获得查询结果
这里是我在SQL
SELECT DISTINCT apps.id, apps.*, req.status
FROM applications AS apps, requests AS req
WHERE apps.id = {$app_id}
使用一些示例代码但问题是,它会拉不上来没有一个request.status值/进入应用程序,所以问题是:会可以修改这个简单的查询来为所有应用程序提取结果*行,即使没有相应的requests.status行/条目时也是如此。
编辑贝洛:
所以这里是我从我得到的反馈新的查询(这工作正常)
SELECT DISTINCT
apps.*, req.status
FROM
applications AS apps
LEFT JOIN requests AS req ON (req.app_id = apps.id AND req.uid = {$user_id})
WHERE
apps.id = {$app_id}
但是:当我添加一个新的表达到哪里子句来过滤请求状态,我得到与隐式查询相同的问题,我没有得到结果(查询是波纹管)
SELECT DISTINCT
apps.*, req.status
FROM
applications AS apps
LEFT JOIN requests AS req ON (req.app_id = apps.id AND req.uid = {$user_id})
WHERE
apps.id = {$app_id}
AND
(req.status = 2 OR req.status = 5)
ANOTHER编辑
这里更新代码来看看。 现在的问题是,如果我添加一个子查询,子查询将拉起所有的行,然后作为状态列的值为NULL,但只要我添加一个WHERE状态!= 2它只是删除所有条目,这不应该仍然有所有行的空?因为空显然是!= 2
SELECT DISTINCT
apps . *
FROM
(SELECT
apps . *, req.status
FROM
appstore_app AS apps
LEFT JOIN app_user_request AS req ON (req.uid = 187 AND req.appid = apps.appid)
WHERE
apps.appid > 0 AND apps.company_id = 122) AS apps
WHERE
apps.status != 2
ORDER BY apps.average_user_rating DESC
最后编辑
感谢所有帮助!
这是我为我工作的最终查询:
SELECT
apps.*, req.status
FROM
appstore_app AS apps
LEFT JOIN
app_user_request AS req ON (req.uid = {$user_id} AND req.appid = apps.appid AND (req.status IS NULL OR req.status != 2))
WHERE
apps.appid > 0 AND apps.company_id = {$company_id}
我已更新我的答案以解决您的第三个查询。 –