SQL | GEBRUIKSclausule

SQL | GEBRUIKSclausule

Als meerdere kolommen dezelfde namen hebben maar de gegevenstypen niet overeenkomen, kan de NATURAL JOIN-clausule worden gewijzigd met de GEBRUIK MAKEND VAN -clausule om de kolommen op te geven die moeten worden gebruikt voor een EQUIJOIN .

  • De USING-clausule wordt gebruikt om slechts één kolom te matchen als er meer dan één kolom overeenkomt.
  • De clausule NATURAL JOIN en USING sluiten elkaar wederzijds uit.
  • Er mag geen kwalificatie (tabelnaam of alias) in de kolommen waarnaar wordt verwezen, voorkomen.
  • NATURAL JOIN gebruikt alle kolommen met overeenkomende namen en gegevenstypen om de tabellen samen te voegen. De USING-clausule kan worden gebruikt om alleen die kolommen op te geven die voor een EQUIJOIN moeten worden gebruikt.

VOORBEELDEN:

We zullen de onderstaande commando's toepassen op de volgende basistabellen:

    Werknemerstabel

    Afdelingstabel

    VRAAG 1: Schrijf een SQL-query om de werklocatie van de werknemers te vinden. Geef ook hun respectieve werknemers-ID en achternaam op?

     Input : SELECT e.EMPLOYEE_ID, e.LAST_NAME, d.LOCATION_ID FROM Employees e JOIN Departments d USING(DEPARTMENT_ID); Output : 

Uitleg: Het getoonde voorbeeld voegt zich bij de kolom DEPARTMENT_ID in de WERKNEMERS en DEPARTMENTS
tabellen, en toont zo de locatie waar een medewerker werkt.

We zullen de onderstaande commando's toepassen op de volgende basistabellen:

    Landentabel

    Locatie tabel

    VRAAG 2: Schrijf een SQL-query om de locatie_id, het straatadres, de postcode en de respectievelijke landnaam te vinden?

     Input : SELECT l.location_id, l.street_address, l.postal_code, c.country_name FROM locations l JOIN countries c USING(country_id); Output : 

Uitleg: Het getoonde voorbeeld voegt zich bij de kolom COUNTRY_ID in de LOCATIONS en COUNTRIES
tabellen en toont zo de vereiste details.

OPMERKING: Wanneer we de USING-clausule in een join-instructie gebruiken, is de join-kolom niet gekwalificeerd met tabelalias. Voer geen alias uit, ook al wordt dezelfde kolom elders in de SQL-instructie gebruikt:

Voorbeeld:

     Input: SELECT l.location_id, l.street_address, l.postal_code, c.country_name FROM locations l JOIN countries c USING(country_id) WHERE c.country_id'IT'; Output: 

Uitleg: Omdat de kolom in de USING-clausule opnieuw wordt gebruikt in de WHERE-clausule, genereert deze een fout voor de gebruiker.