Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] Złożony SELECT
parzol
post
Post #1





Grupa: Zarejestrowani
Postów: 135
Pomógł: 1
Dołączył: 7.05.2005

Ostrzeżenie: (0%)
-----


Hej!

Mam następujące tabele:
ROOM (id, name, property_id)
ATTRACTION (id, name, icon)
ROOM_PRICE (id, room_id, date_from, date_to, price) // wiele możliwych cenników dla pojedynczego pokoju!
PROPERTY (id, name)
PROPERTY_ATTRACTION(property_id, attraction_id)

Chce wyświetlić wszystkie pokoje z dowolnymi atrakcjami (np ID=1 i ID=9) oraz wybrać cennik dla danego pokoju. Wszystko w jednym zapytaniu.

Próbowałem poniższego zapytania:

  1. SELECT r.id AS room_id, GROUP_CONCAT(DISTINCT CONCAT(a.name, '*', a.icon) ORDER BY a.name SEPARATOR '|') AS attractions, GROUP_CONCAT(DISTINCT CONCAT(rp.id, '*', rp.price) ORDER BY rp.id SEPARATOR '|') AS price_list FROM room r LEFT JOIN property p ON r.property_id=p.id LEFT JOIN property_attraction pa ON pa.property_id=p.id LEFT JOIN attraction a ON a.id=pa.attraction_id AND (a.is_active=1 OR a.is_active IS NULL) LEFT JOIN room_price rp ON rp.room_id=r.id WHERE pa.attraction_id IN(1,9) GROUP BY r.id HAVING count(pa.attraction_id)=2 ORDER BY p.is_promoted DESC LIMIT 0, 50


Ale rezulatatem jest lista błędnych pokojów (nie tych o wskazanych dwóch atrakcjach). Jak zbudować tutaj poprawne zapytanie?


Z góry dzięki za wszelką pomoc!
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 00:52