Mam takie tabele:
Kod
mysql> SELECT * FROM place;
+----+-----------+
| id | is_active |
+----+-----------+
| 1 | 1 |
| 2 | 1 |
+----+-----------+
2 rows in set (0.00 sec)
mysql> SELECT * FROM property_place_distance;
+-------------+----------+----------+
| property_id | place_id | distance |
+-------------+----------+----------+
| 1 | 1 | 30 |
+-------------+----------+----------+
1 row in set (0.00 sec)
+----+-----------+
| id | is_active |
+----+-----------+
| 1 | 1 |
| 2 | 1 |
+----+-----------+
2 rows in set (0.00 sec)
mysql> SELECT * FROM property_place_distance;
+-------------+----------+----------+
| property_id | place_id | distance |
+-------------+----------+----------+
| 1 | 1 | 30 |
+-------------+----------+----------+
1 row in set (0.00 sec)
Dane wyciągam takim zapytaniem:
Kod
mysql> SELECT p.id, ppd.distance FROM place p LEFT OUTER JOIN property_place_distance ppd ON p.id=ppd.place_id WHERE ppd.property_id=1;
+----+----------+
| id | distance |
+----+----------+
| 1 | 30 |
+----+----------+
1 row in set (0.00 sec)
+----+----------+
| id | distance |
+----+----------+
| 1 | 30 |
+----+----------+
1 row in set (0.00 sec)
jednak chciałbym uzyskać taki raport:
Kod
+----+----------+
| id | distance |
+----+----------+
| 1 | 30 |
| 2 | NULL |
+----+----------+
| id | distance |
+----+----------+
| 1 | 30 |
| 2 | NULL |
+----+----------+
Czyli:
chciałbym wybrać wszystkie rekordy z tabeli "place" oraz dołączyć do nich dane z "property_place_distance" (na podstawie p.id=ppd.place_id) ale! tylko takie, dla których ppd.property_id=1 (lub inna wartość). Jeśli takowych nie będzie powinno w tych miejscach zwrócić NULL.
Jeśli macie jakiś pomysł to prosiłbym o pomoc.
pion