在SQL查询中为“LEFT JOIN”定义“WHERE”?

时间:2011-03-27 02:10:54

标签: php sql

好的,这是另一个令我头疼的SQL查询。

案例:我列出了拍卖的描述,该列表还会说明登录的用户是否正在观看此次拍卖(如收藏)。

如果他正在观看拍卖,他的用户ID +拍卖ID位于名为watchlist-auctions的表格内。如果他不看,那条记录就不存在了。

这是我的问题:

   SELECT
      `auctions`.`auction_description_1`,
      `watchlist-auctions`.`watchlist_a_id` as `watch-auction`
   FROM `auctions`
   LEFT JOIN `watchlist-auctions` ON `auctions`.`auction_id`=`watchlist-auctions`.`watchlist_a_auction`
   WHERE `auction_id`='6'
   GROUP BY `auctions`.`auction_id`

基本上,它有点工作,但是我不知道在查询中我在哪里定义用户ID?

我在$userID(在php中)登录了用户ID。

我不确定我是否正确解释了这一点,因为这是一个如此简单的问题,因为这是一个非常简单的问题,但是我发现这些SQL查询非常困难。如果我能更好地解释一下,请告诉我我搞砸了:/

P.S。:如果我能为此提供赏金,我想马上提供+100。

3 个答案:

答案 0 :(得分:2)

 SELECT
      `auctions`.`auction_description_1`,
      `watchlist-auctions`.`watchlist_a_id` as `watch-auction`
 FROM `auctions`
 LEFT JOIN `watchlist-auctions` ON
           `auctions`.`auction_id`=`watchlist-auctions`.`watchlist_a_auction`
       AND `watchlist-auctions`.userID= $userID
 WHERE `auction_id`='6'
 GROUP BY `auctions`.`auction_id`

因此,LEFT JOIN会在拍卖+用户的两个条件下激活,但它不会干扰LEFT表(拍卖)。

答案 1 :(得分:0)

不完全确定user_id字段在架构中的位置,也不确定表中的字段名称是什么;但您应该能够将其作为where子句的附加条件添加。

WHERE `auction_id`='6' AND `watchlist-auctions`.`user_id` = $userID

答案 2 :(得分:0)

我不确定为什么你要加入,因为每次拍卖都应该在观看拍卖中:

   SELECT
      `auctions`.`auction_description_1`,
      `watchlist-auctions`.`watchlist_a_id` as `watch-auction`
   FROM `watchlist-auctions`
   inner JOIN `auctions` ON `auctions`.`auction_id`=`watchlist-auctions`.`watchlist_a_auction`
   WHERE `auction_id`='6'
      and `user_id` = .......
   GROUP BY `auctions`.`auction_id`