我正在尝试简化我的代码。
我目前有两个查询:一个选择信息列表并输出选择框以添加到用户订阅然后第二个查询选择用户已订阅的项目但我试图将代码简化为一个查询。
我目前可以通过复选框显示用户已订阅的选项的代码,但是没有相反的方法可以在WHERE子句中选择与结果相反的方法吗?
$selectionQuery = 'SELECT t1.subId, t1.subTitle FROM tbl_subs t1 LEFT JOIN tbl_list t2 ON t2.subId = t1.subId WHERE t2.userId = '.$id.' AND t1.subId = t2.subId';
答案 0 :(得分:0)
您已加入LEFT JOIN
部分的subId。从AND t1.subId = t2.subId'
部分移除WHERE
,因为它再次加入您的结果集并克服左连接。
正确:
$selectionQuery = 'SELECT t1.subId, t1.subTitle FROM tbl_subs t1 LEFT JOIN tbl_list t2 ON t2.subId = t1.subId WHERE t2.userId = '.$id.';
答案 1 :(得分:0)
这段代码可能不是ansiSQL,但它在MYSQL上运行完善。
$ selectionQuery ='SELECT t1.subId,t1.subTitle FROM tbl_subs as t1 WHERE not exists(从tbl_list中选择1作为t2,其中t2.userId ='。$ id。'AND t1.subId = t2.subId)' ;