Možda je malo konfuzan naslov teme ali evo šta pokušavam: Imam sajt sa nekretninama i svaka od nekretnina može da ima neke "pogodnosti" pridružne (amenities, ne znam da li sam lepo preveo). To je sve organizovano ovako u tabelama (koje su bitne za problem):
1. properies - id, title, description, price, ...
2. amenities - id, name
3. amenities_properties - amenity_id, property_id
E sad, pri pretrazi nekretnina imam checkboxove kojima treba da se suze rezultati pretrage na samo one nekretnine koje imaju sve označene "pogodnosti" pridružene. Probao sam ovako:
Kôd:
SELECT DISTINCT `properties`.*
FROM `properties`
...
LEFT JOIN `amenities_properties` ON `properties`.`id` =
`amenities_properties`.`property_id`
...
WHERE `amenities_properties`.`amenity_id` IN (9, 15, 24)
Međutim, to mi vraća sve nekretnine koje imaju bar jednu od označenih pogodnosti, ali meni trebaju samo nekretnine koje imaju
sve označene (u primeru sve tri) pogodnosti pridružene. Zatim sam probao ovako:
Kôd:
SELECT DISTINCT `properties`.*
FROM `properties`
...
LEFT JOIN `amenities_properties` ON `properties`.`id` =
`amenities_properties`.`property_id`
...
WHERE (
`amenities_properties`.`amenity_id` = 9
AND
`amenities_properties`.`amenity_id` = 15
AND
`amenities_properties`.`amenity_id` = 24
)
Ovo mi ne vraća ništa
Nema greške u upitu već je rezultat prazan, iako sam siguran da bar jedna od nekretnina ima pridružene sve pogodnosti sa kojima sam testirao.
Da li ima neki način da ja dohvatim sve nekretnine koje imaju sve pogodnosti pridružene, a da ne moram da dohvatim sve koje imaju bar jednu (sa where... in ()) pa da onda iz PHP-a proveravam svaku ponaosob?