[Mysql] Alleen unieke velden tonen, met koppeling ander veld

Pagina: 1
Acties:

  • Gerwin
  • Registratie: Juli 2001
  • Laatst online: 08-06-2025

Gerwin

Ik ben er klaar voor!

Topicstarter
Het volgende is het geval. Ik heb twee tabellen in een mysql database staan. In de eerste tabel staan rows met allemaal een id (uniek), een nummer (niet uniek) en een stuk tekst. In de tweede tabel staan alle id's (niet uniek) uit de eerste met een PUB_ID veld (uniek).
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
TABEL 1:

id    | nummer      | tekst
1     | 1000        | blaat      (NEE, 1 komt voor)
2     | 1000        | tralala    (NEE, 1 kwam reeds voor)
3     | 1002        | nog tekst  (NEE, 3 komt voor)
4     | 1004        | pietje     (JA, 4 komt niet voor)
5     | 1007        | hallo      (JA, 5 komt niet voor)
6     | 1007        | prima      (JA, 6 komt niet voor)

TABEL 2:

id    | pub
1     | 1
3     | 3


Het idee is dat ik uit Tabel 1 alle rows krijg waarvan de id's niet voorkomen als deze in Tabel 2 staan, maar als deze wel in tabel 2 staan mag er vervolgens geen enkele row teruggegeven worden met datzelfde nummer.

Bij bovenstaande situatie zou ik dus alllen de rows met een JA terug willen krijgen. Zelf heb ik zitten goochelen met JOIN, ik kan dan wel de rows krijgen waarvan wel ID in tabel 2 staat (WHERE id IS NULL), maar blijf vervolgens wel met die dubbele 1000 nummer zitten, 1 is makkelijk, maar id 2 staat niet in tabel 2 en hoe kan je dan zeggen id 1 niet en omdat nummer 1000 dan ineens "negatief" is mag die helemaal niet meer.

Station van Gerwin Prins op Apple Music


  • Orphix
  • Registratie: Februari 2000
  • Niet online
kan je het probleem niet zo aanpakken:
1. Genereer een lijst met alle nummers die voorkomen (via id) (bv via een subselect)
2. Genereer een lijst met alle id's (uit tabel1) waarvan het nummer niet voorkomt in de lijst in stap 1 (WHERE nummer NOT IN ..)

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
SQL:
1
2
3
4
5
6
7
Select *
From tabel1
Where (
  tabel1.id not in (select tabel2.pub from tabel2)
) and (
  tabel1.nummer not in (Select tabel2.nummer From tabel1 Inner Join tabel2 on tabel1.id = tabel2.pub)
)


Effe vlug in elkaar geflanst. Doet wat je wil. Of het netter kan is een tweede ;)

Regel 4 zorgt ervoor dat de ID's uit tabel 1 niet voorkomen in tabel 2's PUB veld.
Regel 6 zorgt evoor dat de juiste nummers behorende bij de ID's uit tabel 1 worden ge-exclude.

[ Voor 23% gewijzigd door RobIII op 13-09-2006 02:26 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Gerwin
  • Registratie: Juli 2001
  • Laatst online: 08-06-2025

Gerwin

Ik ben er klaar voor!

Topicstarter
Is er geen manier zodat ik als het ware als er een id voorkomt ik de waarde van een veld in een ander kolom negatief kan maken zodat deze niet meer getoond wordt voor alle volgende rows?

Ik ga morgen eens puzzelen met die "not in" mogelijkheid.

[ Voor 14% gewijzigd door Gerwin op 13-09-2006 02:27 ]

Station van Gerwin Prins op Apple Music