2012-04-21 9 views
2

あるテーブルからデータを選択しようとしているのは、ユーザとサイトの別のテーブル内にデータがない場合のみです。別のテーブルに行がないときにMySQLから行を選択する方法

これまで私がこれまで行ってきたことです。

SELECT 
    l.link_id, 
    l.link_name, 
    l.link_points, 
    l.link_time, 
    COUNT(uc.user_id) AS clicks 
FROM 
    links AS l LEFT OUTER JOIN 
    (SELECT user_id, site_id FROM user_clicks WHERE site_id = l.link_id AND user_id = ".$user['user_id'].") as uc 
    USING (link_id) 
GROUP BY 
    l.link_id 

それで私の現在の試みですが、外のデータが加わることを引くしようとしたとき、私は「『where句』内の不明な列 『l.link_id』」を取得します。

どうすればよいですか?

SELECT 
    l.link_id, 
    l.link_name, 
    l.link_points, 
    l.link_time, 
    COUNT(uc.user_id) AS clicks 
FROM 
    links AS l LEFT JOIN 
    user_clicks uc ON uc.site_id = l.link_id 
WHERE user_id = ".$user['user_id']." 
    AND uc.site_id IS NULL 
GROUP BY 
    l.link_id 

LEFT JOINを他のテーブルに行がないことを、テーブルlinksから、あなたが確認してWHERE句のuc.site_id IS NULLですべてのものを選択します。

答えて

1

ここでこれは動作するはずです。実際には、どの列に名前が付けられているかは重要ではありません。user_clicks

+0

このソリューションではエラーは発生しませんが、リンクデータベースにユーザーのエントリがない場合は何も返されませんサイト。 – Dave

+0

@DavidMacaulayそれはあなたが求めていたものですか?いいえ?そして、あなたが達成したいことをもう一度説明してください。 – fancyPants

関連する問題