Ergebnisse Ich habe folgende MySQL-Tabellen:Fügen Sie NULL-Werte in MySQL SELECT
tbl_pet_owners:
+----+--------+----------+--------+--------------+
| id | name | pet | city | date_adopted |
+----+--------+----------+--------+--------------+
| 1 | jane | cat | Boston | 2017-07-11 |
| 2 | jane | dog | Boston | 2017-07-11 |
| 3 | jane | cat | Boston | 2017-06-11 |
| 4 | jack | cat | Boston | 2016-07-11 |
| 5 | jim | snake | Boston | 2017-07-11 |
| 6 | jim | goldfish | Boston | 2017-07-11 |
| 7 | joseph | cat | NYC | 2016-07-11 |
| 8 | sam | cat | NYC | 2017-07-11 |
| 9 | drew | dog | NYC | 2016-07-11 |
| 10 | jack | frog | Boston | 2017-07-19 |
+----+--------+----------+--------+--------------+
tbl_pet_types:
+----------+-------------+
| pet | type |
+----------+-------------+
| cat | mammal |
| dog | mammal |
| goldfish | fish |
| goldfish | seacreature |
| snake | reptile |
+----------+-------------+
ich die folgende SELECT-Anweisung haben
SELECT DISTINCT owners.name, owners.pet, owners.city,
group_concat(DISTINCT types.type separator ', ') AS type
FROM tbl_pet_owners owners
INNER JOIN tbl_pet_types types ON owners.pet = types.pet
WHERE owners.city = 'Boston' OR owners.city = 'NYC'
GROUP BY owners.name, owners.pet
ORDER BY owners.city
..welche dieses Ergebnis zurück:
+--------+----------+--------+-------------------+
| name | pet | city | type |
+--------+----------+--------+-------------------+
| jack | cat | Boston | mammal |
| jane | cat | Boston | mammal |
| jane | dog | Boston | mammal |
| jim | goldfish | Boston | fish, seacreature |
| jim | snake | Boston | reptile |
| drew | dog | NYC | mammal |
| joseph | cat | NYC | mammal |
| sam | cat | NYC | mammal |
+--------+----------+--------+-------------------+
Leider aus den Ergebnissen nicht angegeben, Buchse des Frosches, weil es keinen Eintrag für Frosch in tbl_pet_types ist. Wie kann ich meine Abfrage so bearbeiten, dass sie den Frosch in den Ergebnissen enthält (mit type = NULL)?
Ändern Sie Ihren 'INNER JOIN' in einen' LINKEN OUTER JOIN' und lassen Sie ihn rippen. 'INNER JOIN' sagt" Gib nur Ergebnisse zurück, bei denen die Join-Bedingung zutrifft ". 'LEFT OUTER JOIN' sagt:" Gib alle Ergebnisse aus der ersten Tabelle zurück und nur die Ergebnisse aus der linksbündigen Tabelle, wo die Bedingung wahr ist " – JNevill
Mögliche Duplikate von [Was ist der Unterschied zwischen" INNER JOIN "und" OUTER JOIN "? "?] (https://stackoverflow.com/questions/38549/what-is-the-difference-between-inner-join-and-outer-join) – JNevill
@JNevill Ich denke diese Bedingungen in der WHERE-Klausel auch müssen in die ON-Klausel verschoben werden. –