[MySQL] Wie kan deze JOIN uitvoeren?

Pagina: 1
Acties:
  • 48 views sinds 30-01-2008

  • Joske Pauwels
  • Registratie: Februari 2001
  • Laatst online: 19-07-2016

Joske Pauwels

Stelt zich vragen...

Topicstarter
Hey!
Ik heb een klein MySQL vraagje:
ik heb 2 (erg grote) tabellen
- 1 tabel "cofena_abonnees" met allemaal abonnees. Ze hebben allemaal een uniek nummer in de kolom ID
-1 tabel "cofena_zaal" met alle plaatsen in mijn zaal (een 3000-tal). In deze tabel is er een kolom genaamd "abonnee" waarin ik het ID nummer van de abonnee zet die deze vaste plaats heeft.

Nu moet ik een lijst genereren van alle abonnees die plaatsen hebben. Er zijn veel meer abonnees dan plaatsen, maar slechts een klein deel van de abonnees heeft een plaats. Er zijn dus in de tabel cofena_zaal een hoop NULL values in de kolom "abonnee" omdat er niemand zit.

Bestaat er een soort join om dit te verwezelijken?
Hij moet dus enkele kolommen uit de tabel cofena_abonnees selecteren (die heb ik nodig), maar hij moet kijken of die abonnee wel ergens voorkomt in de tabel cofena_zaal.

Momenteel is mijn SQL statement dit:
code:
1
2
3
4
5
$result = mysql_query("SELECT cofena_abonnees.naam FROM cofena_abonnees LEFT JOIN cofena_zaal ON cofena_abonnees.id = cofena_zaal.abonnee;");
while (list($naam) = mysql_fetch_row($result))
{
    hier print ik dan een <tr> regeltje met de data van die abonnee
}

Het probleem is dat hij met deze code iedere abonnee evenveel keer zal afprinten als dat hij plaatsen heeft. Abonnees met 3 plaatsen worden dus 3 keer in de lijst gezet.

Iemand een idee hoe ik dit kan doen in één SQL statement, of is dat niet mogelijk?

Tnx!

PS: ik weet dat het ook gaat via ingewikkeldere PHP code, waarbij ik elke plaats zou doorlopen, kijken of ik ze al gehad heb, en zoniet de abonnee opzoek. Maar wegens performance-redenen is dat geen optie.

[ Voor 25% gewijzigd door Joske Pauwels op 27-04-2004 21:37 ]


Verwijderd

Het lijkt me dat dat een eenvoudige INNER JOIN is.

  • whoami
  • Registratie: December 2000
  • Laatst online: 15:18
Kijk eens in de P&W FAQ, er staat daar een heel stukje over joins enzo.

https://fgheysels.github.io/


  • Joske Pauwels
  • Registratie: Februari 2001
  • Laatst online: 19-07-2016

Joske Pauwels

Stelt zich vragen...

Topicstarter
Hmmm. INNER JOINS zijn idd iets dat ik niet echt ken. Ik zal daar eens kijken. Tnx

PS: staat niet in FAQ denk ik...

[ Voor 18% gewijzigd door Joske Pauwels op 27-04-2004 21:32 ]


  • SilentStorm
  • Registratie: November 2000
  • Laatst online: 18-03 14:45

SilentStorm

z.o.z

tadaaa

kun je trouwens je code van een paar enters voorzien? dit leest wel erg moeilijk.

Localhost is where the heart is


  • Feyd-Rautha
  • Registratie: November 2001
  • Laatst online: 02-08-2025
Een INNER JOIN is een gewone JOIN.
Als je dat niet kent, dan ken je geen enkele join.

I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. Where the fear has gone there will be nothing. Only I will remain.


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 25-05 22:48

Creepy

Tactical Espionage Splatterer

Joske Pauwels schreef op 27 april 2004 @ 21:30:


PS: staat niet in FAQ denk ik...
Je moet niet denken. Je moet wel de FAQ lezen ;)
P&W FAQ - SQL

Edit: en 2 man was me voor..

[ Voor 8% gewijzigd door Creepy op 27-04-2004 21:36 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Joske Pauwels
  • Registratie: Februari 2001
  • Laatst online: 19-07-2016

Joske Pauwels

Stelt zich vragen...

Topicstarter
Had het ook net gezien...

En ivm die INNER JOIN: heb ik net geprobeerd, en hij blijft abonnees herhalen. Iemand een idee?

Tnx

  • Shadowman
  • Registratie: Januari 2002
  • Niet online
P&W FAQ - SQL

Stukje over distinct ;).

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 16:00
Joske Pauwels schreef op 27 april 2004 @ 21:37:
Had het ook net gezien...

En ivm die INNER JOIN: heb ik net geprobeerd, en hij blijft abonnees herhalen. Iemand een idee?

Tnx
Wat heb je nu? Alleen LEFT door INNER veranderd of nog meer? Misschien moet je verder eens kijken naar group by, is dat niet wat je bedoeld?
Stukje over distinct .
Lijkt me hier niet nodig...

[ Voor 9% gewijzigd door djluc op 27-04-2004 21:47 ]


  • Joske Pauwels
  • Registratie: Februari 2001
  • Laatst online: 19-07-2016

Joske Pauwels

Stelt zich vragen...

Topicstarter
Ok, ik heb het dus gevonden: het is gewoon met GROUP BY op te lossen. Ik dacht dat ik het ergens bij de JOINS moest zoeken, maar blijkbaar niet...

  • whoami
  • Registratie: December 2000
  • Laatst online: 15:18
Gebruik je dan aggregated functions ? :?

https://fgheysels.github.io/


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 15:56

.oisyn

Moderator Devschuur®

Demotivational Speaker

Mja, FAQs en manual lezen dus

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1

Dit topic is gesloten.