har en data bas med ett antal fält. Ett fält, rubrik, kan innehålla samma text men jag vill bara att varje text får visas en gång. T ex om ordet VOlvo finns med i flera rubiker ska endast den första förekomsten visas.
Jag har två tabeller där ett fält som heter "typ" finns med i båda! Nu vill jag ha fram alla olika artiklar, men bara en av varje som jag sedan lägger i en <select> lista.
hehe, jag har skrivit en egen liten SQL-guide som jag brukar "fuska" lite med då jag har problem med sql. De här e direkt ur den.
---
UNION / INTERSECT / MINUS
Om vi har två tabeller som ser ut
såhär:
fotboll
-------
namn:
peter
erik
johan
karl
per
handboll
--------
namn:
sten
peter
per
andreas
johan
Nu har vi 2 tabeller med namn på fotbolls- respektive handbollsspelare.
Vilka spelare spelar i nåt av lagen? Vi använder UNION för att kolla.
SQL = "SELECT * FROM fotboll UNION SELECT * FROM handboll"
Nu visar den samtliga personer som spelar i något lag (8 st). Två spelare
spelar både handboll och fotboll, dessa listas enbart en gång. För att
lista samtliga personer, inklusive dubletter så kan man använda UNION ALL.
SQL = "SELECT * FROM fotboll UNION ALL SELECT * FROM handboll"
Nu får vi 10 stycken svar, varav 2 stycken johan och per.
Vill vi endast lista de spelare som spelar både handboll och fotboll gör
vi såhär:
SQL = "SELECT * FROM fotboll INTERSECT SELECT * FROM handboll"
Denna frågesträng kommer ge johan och per som svar.
Sen kan man använda funktionen MINUS för att ta bort de som spelar i nåt
annat lag än det första i frågan, i fallet nedan, fotboll.
SQL = "SELECT * FROM fotboll MINUS SELECT * FROM handboll"
Man får alltså fram de som endast spelar fotboll.
---
mvh
258 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a