3

以下の私のSQLクエリは、最初の内部結合で正しく終了しないと言っていますか?2番目のテーブルとwhere句を削除すると、クエリは問題ありませんか?

SELECT homes.home_id, homes.title, homes.description, homes.living_room_count, homes.bedroom_count, homes.bathroom_count, homes.price, homes.sqft,
listagg(features.feature_name, '\n') WITHIN GROUP(ORDER BY features.feature_name) features, home_type.type_name
FROM homes, bookings
WHERE bookings.booking_end < date '2013-01-23' OR bookings.booking_start > date '2013-01-22' AND bookings.home_id <> homes.home_id
INNER JOIN home_feature ON homes.home_id = home_feature.home_id 
INNER JOIN home_type ON home_type.type_code = homes.type_code 
INNER JOIN features ON home_feature.feature_id = features.feature_id 
GROUP BY homes.home_id, homes.title, homes.description, homes.living_room_count, homes.bedroom_count, homes.bathroom_count, homes.price, homes.sqft, home_type.type_name

誰かが私のクエリで明らかなエラーを見ることができますか?

4

1 に答える 1

7

WHEREが間違った場所にあり、結合タイプが混在しています。

SELECT homes.home_id, 
    homes.title, homes.description, 
    homes.living_room_count, 
    homes.bedroom_count, 
    homes.bathroom_count, 
    homes.price, 
    homes.sqft,
    listagg(features.feature_name, '\n') WITHIN GROUP(ORDER BY features.feature_name) features, 
    home_type.type_name
FROM homes
INNER JOIN bookings
    ON bookings.home_id = homes.home_id
INNER JOIN home_feature 
    ON homes.home_id = home_feature.home_id 
INNER JOIN home_type 
    ON home_type.type_code = homes.type_code 
INNER JOIN features 
    ON home_feature.feature_id = features.feature_id 
WHERE bookings.booking_end < date '2013-01-23' 
    OR booking_start > date '2013-01-22' 
GROUP BY homes.home_id, homes.title, homes.description, 
       homes.living_room_count, homes.bedroom_count, 
       homes.bathroom_count, homes.price, homes.sqft, home_type.type_name

WHERE句は、の前後に表示されJOINますGROUP BY。また、1つのタイプの結合構文を使用する必要があります。明示的な構文と暗黙的な構文の両方を使用していました。テーブル間でコンマを使用する代わりに、homesとの結合を移動しました。bookingJOIN

于 2013-01-22T14:57:08.187 に答える