[query] toon waarden waar iets niet voorkomt

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • CAP-Team
  • Registratie: April 2000
  • Laatst online: 11-09 13:24

CAP-Team

XBL: CAPTeam

Topicstarter
Hallo,

Ik ben al een paar uur aan het puzzelen met inner/outer en left en right joins. Misschien dat iemand mij de goede richting kan wijzen.

Ik heb 3 tabellen:

User:
- userid

Company:
- companyid
- companyname

UserCompany:
- companyid
- userid

Via deze tabellen kan ik gebruikers aan een bedrijf koppelen.

Nu wil ik via een query die bedrijv(en) tonen waarin de gebruiker1 NIET voorkomt.

User:
User1
User2

Company:
01; Bedrijf1
02; Bedrijf2
03; Bedrijf3

UserCompany:
01; User1
02; User1
01; User2

Het resultaat van de query zou moeten zijn:
03; Bedrijf3

Ik heb al van alles geprobeerd zoals:
code:
1
2
3
4
5
6
SELECT DISTINCT c.companyid, c.companyname
FROM company c LEFT JOIN usercompany uc
USING (companyid)
WHERE (userid <> '$userid') OR
              (userid is null)
ORDER BY companyid;";


Dit werkt goed zolang een gebruiker niet voorkomt bij alle bedrijven, maar als een gebruiker alle bedrijven heeft wordt er nog wel output gegenereerd voor eventuele andere gebruikers.

Iemand een tip?

Microsoft Surface Pro 6 | Samsung Galaxy S21FE | XBOX Series X


Acties:
  • 0 Henk 'm!

  • Mercatres
  • Registratie: September 2009
  • Laatst online: 11-09 12:17
Zou iets als "NOT IN(..)" werken?

Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
of WHERE NOT EXISTS

Acties:
  • 0 Henk 'm!

  • CAP-Team
  • Registratie: April 2000
  • Laatst online: 11-09 13:24

CAP-Team

XBL: CAPTeam

Topicstarter
Volgens mij is het gelukt :)

code:
1
2
3
4
5
SELECT c.companyid, c.companyname
FROM company c
WHERE c.companyid NOT IN (SELECT uc.companyid
                          FROM usercompany uc
                          WHERE uc.userid = '$userid');


Thanx.

Microsoft Surface Pro 6 | Samsung Galaxy S21FE | XBOX Series X