0

ユーザーが訪れた場所を追加する Web サイトを作成しています。

メインテーブルは4つ

users (user_id,name )
places (place_id,type_id,place_name, city_id)
user_place (user_id,place_id, date )
city(city_id,city_name)

(where type=2)ここで、特定のユーザーが(user_id=43 lets say)場所の名前、都市の名前、および同じ場所に参加している他のすべてのユーザーの数で参加するタイプ 2 のすべての場所を 1 つのクエリで取得する必要があります...昨日、mysqlに関する一冊の本を持ってこんなことにたどり着きました

    SELECT *
    FROM `user_place` , `places`,(SELECT count(user_id) 
 from user_places
 WHERE user_place.place_id = places.place_id) as count
    WHERE user_place.place_id = places.place_id
    AND user_place.user_id =53

しかし、エラーが発生しました: 不明な列 'places.place_id' in 'where clause' And still no Idea どうすれば地名と都市名を結果にスマートに添付できますか... できれば助けてください...

4

2 に答える 2

1

このようなものを見ることができます

SELECT  u.user_id,
        u.NAME,
        p.place_id,
        p.place_name,
        c.city_id,
        c.city_name,
        placeCount.Cnt
FROM    places p INNER JOIN
        user_place up ON p.place_id = up.place_id INNER JOIN
        users u ON up.user_id = u.user_id INNER JOIN
        city c ON p.city_id = c.city_id LEFT JOIN
        (
            SELECT  place_id,
                    COUNT(DISTINCT user_id) Cnt
            FROM    user_place
            WHERE   user_id <> 43
            GROUP BY place_id
        ) placeCount ON p.place_id = placeCount.place_id
WHERE   p.type_id = 2
AND     up.user_id = 43
于 2009-12-28T12:09:27.077 に答える
0
SELECT p.place_id, p.place_name, c.city, placeCount.Cnt
FROM places p
INNER JOIN user_place up ON p.place_id = up.place_id
INNER JOIN fa_user u ON up.user_id = u.id
INNER JOIN city c ON p.city_id = c.id
LEFT JOIN (

SELECT place_id, COUNT( DISTINCT user_id ) Cnt
FROM user_place
WHERE user_id <>53
GROUP BY place_id
)placeCount ON p.place_id = placeCount.place_id
WHERE up.user_id =53
LIMIT 0 , 30
于 2009-12-28T20:36:44.337 に答える