[SQL] code zit geen fouten in maar geen resultaat

Pagina: 1
Acties:

  • ReseTTim
  • Registratie: Juni 2000
  • Laatst online: 12:53

ReseTTim

Chocolate addicted

Topicstarter
probleem is als volgt. ik wil dus alle gegevens hebben van personeel. echter nog niet alle personeelsleden hebben een foto. wat dus in dit geval betekend dat er geen records eruit komen.

ik had eerst alles achter elkaar geplaatst met komma's of RIGHT OUTER JOIN geprobeert maar dat werkt ook niet.

SQL:
1
2
3
4
SELECT *
FROM bestanden LEFT OUTER JOIN ((personeel INNER JOIN bedrijven ON personeel.bedrijf_fk = bedrijven.bedrijfid) 
INNER JOIN locaties ON personeel.locatie_fk = locaties.locatieid) ON personeel.personeelsnr = bestanden.personeelsnr_fk
WHERE bestandscategorie='smoelenboek' AND personeelsnr = '$persnr'


dit is de huidige code die ik heb. hieraan is niks mis mee. bedrijf en locatie is altijd bekend en aanwezig dus. een foto dat in bestand tabel staat niet.

iemand een oplossing?

Mijn profiel - Te koop: Overzicht van spullen..


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Even kort een datamodel en wat je precies als resultaat wilt... Ik zie nl. iets teveel joins voorbij komen :)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Als een personeelslid zowiezo een record heeft in 'personeel', dan moet je daar van selecteren, en LEFT JOINEN op bestanden
Of
selecteren van bestanden, en right joinen op personeel.

code:
1
2
select * from personeel
left join bestanden on ...

of
code:
1
2
select * from bestanden
right join personeel on ...

https://fgheysels.github.io/


  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Ik vind het persoonlijk beter te begrijpen als de hierarchie duidelijk wordt in de query. Ik zou hem dus als volgt structureren:

SQL:
1
2
3
4
5
6
SELECT *
FROM bedrijven
INNER JOIN personeel ON personeel.bedrijf_fk = bedrijven.bedrijfid
INNER JOIN locaties ON personeel.locatie_fk = locaties.locatieid
LEFT OUTER JOIN bestanden ON personeel.personeelsnr = bestanden.personeelsnr_fk
WHERE (bestandscategorie='smoelenboek' OR bestandscategorie is null) AND personeelsnr = '$persnr'

Als een bestand niet bestaat dan doet bestandscategorie='smoelenboek' uit jouw where sowieso ervoor zorgen dat de resultset leeg is, vandaar die OR in mijn versie.

edit:
oeps, locaties vergeten :)

[ Voor 23% gewijzigd door bigbeng op 16-02-2007 13:51 ]


  • MeatLoaf
  • Registratie: Januari 2003
  • Laatst online: 06-04 20:06
Volgens mij is dit jouw bedoeling.

SQL:
1
2
3
4
5
6
7
8
9
10
11
SELECT *
FROM   personeel
LEFT   OUTER
JOIN   bestanden
ON     bestanden.personeelsnr_fk    =  personeel.personeelsnr
AND    bestanden.bestandscategorie  =  'smoelenboek'
     , bedrijven
     , locaties
WHERE  personeel.bedrijf_fk   =  bedrijven.bedrijfid 
AND    personeel.locatie_fk   =  locaties.locatieid
AND    personeel.personeelsnr = '$persnr'

[ Voor 54% gewijzigd door MeatLoaf op 16-02-2007 13:49 ]


  • ReseTTim
  • Registratie: Juni 2000
  • Laatst online: 12:53

ReseTTim

Chocolate addicted

Topicstarter
bigbeng schreef op vrijdag 16 februari 2007 @ 13:44:
Ik vind het persoonlijk beter te begrijpen als de hierarchie duidelijk wordt in de query. Ik zou hem dus als volgt structureren:

SQL:
1
2
3
4
5
6
SELECT *
FROM bedrijven
INNER JOIN personeel ON personeel.bedrijf_fk = bedrijven.bedrijfid
INNER JOIN locaties ON personeel.locatie_fk = locaties.locatieid
LEFT OUTER JOIN bestanden ON personeel.personeelsnr = bestanden.personeelsnr_fk
WHERE (bestandscategorie='smoelenboek' OR bestandscategorie is null) AND personeelsnr = '$persnr'

Als een bestand niet bestaat dan doet bestandscategorie='smoelenboek' uit jouw where sowieso ervoor zorgen dat de resultset leeg is, vandaar die OR in mijn versie.

edit:
oeps, locaties vergeten :)
dit werkt nu.. maar als ik nou andere bestanden hebben die null als bestandscategorie hebben dan komt die er toch ook zichtbaar of niet :?

[edit]

die van hierboven van Meatloaf maar gekozen.. die leek mij beter..

[ Voor 4% gewijzigd door ReseTTim op 16-02-2007 14:29 ]

Mijn profiel - Te koop: Overzicht van spullen..


  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Ik dacht laat ik nog iets te verbeteren overlaten, krijgt je dit :)

Je kunt ipv bestandscategorie inderdaad bestandsid nemen, of een ander veld waarvan je weet dat het bestaat als een record bestaat. Deze zal dan alleen null zijn als er geen bestand bestaat.
Pagina: 1