你好,我有三张桌子一张给用户,一张给用户服务,一张给服务
用户表是(id、用户名、电子邮件、密码)
以及
服务表是(id、Servicename、Servicesdetails、price)
以及
userservices表是(id,userid,serviceid,startdate,enddate)
当用户登录仪表板时,他可以看到他拥有的所有服务。
以及他没有的服务。
对于他提供的所有服务,我都使用了这个查询,并且工作得很好。

$mysql_servicesadded = "SELECT * FROM services INNER JOIN userservices ON userservices.serviceid = services.id WHERE userservices.userid = '".$user."' ORDER BY userservices.startdate DESC";
$query_servicesadded = $dblink->query($m$mysql_servicesadded) or die ("Cannot Get Services");

然后把它拿过来
但是要得到用户没有的所有服务,我不知道要使用什么查询。
请帮忙

最佳答案

使用不存在子查询:

SELECT
    *
FROM
    services
WHERE
NOT EXISTS(
SELECT
    userservices.serviceid
FROM
    userservices
WHERE
    userservices.serviceid = services.id
AND
    userservices.userid = '".$user."'
)

http://dev.mysql.com/doc/refman/5.0/en/exists-and-not-exists-subqueries.html
我认为,由于我们选择的是服务,而不是附加到此用户,因此不需要按user services.startdate进行订购。

10-08 13:01