sql >> Database >  >> RDS >> Mysql

Waarden NIET GEVONDEN opnemen in MySQL-queryresultaten

Een left join is correct, maar je hebt voor de types de eerste zijn:

SELECT DISTINCT types.type, owners.name, owners.city
FROM tbl_pet_types types LEFT JOIN
     tbl_pet_owners owners
     ON owners.pet = types.pet
WHERE types.type IN ('mammal', 'fish', 'amphibian', 'seacreature');

Omdat de WHERE clausule verwijst alleen naar tbl_pet_types , het verandert niet.

Hoe left join werkt is eenvoudig:het houdt alle rijen in de eerste tafel. Niet-overeenkomende kolommen in de tweede worden NULL .

BEWERKEN:

Als je een lijst hebt met typen die niet in tbl_pet_types . staan , dan heb je een left join nodig met alle waarden in een afgeleide tabel:

SELECT DISTINCT tt.type, po.name, po.city
FROM (SELECT 'mammal' as type UNION ALL
      SELECT 'fish' as type UNION ALL
      SELECT 'amphibian' as type UNION ALL
      SELECT 'seacreature' as type 
     ) tt left join
     tbl_pet_types pt
     ON pt.type = tt.type LEFT JOIN
     tbl_pet_owners po
     ON po.pet = pt.pet;


  1. SQL-query waarbij het veld GEEN $x bevat

  2. De naam van een kolom in mysql-tabel wijzigen zonder de typedefinitie te hoeven herhalen

  3. Een uitzondering krijgen ORA-00942:tabel of weergave bestaat niet - bij invoegen in een bestaande tabel

  4. De waarde voor automatisch verhogen van de MySql-database opnieuw instellen met JPA