[SQL] Meerdere records halen uit andere tabel

Pagina: 1
Acties:

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Ik heb 2 tabellen: Klanten en Plaatsen. En klant (1 record uit klanten) kan meerdere plaatsen hebben.

Zo zien de tabellen eruit:
Afbeeldingslocatie: http://www.endoria.net/upload/index.php/1232533229
En dit kan erin zitten:
Afbeeldingslocatie: http://www.endoria.net/upload/index.php/1094975038

Nou wil ik alle klanten hebben met hun plaatsen, maar ik wil elke klant 1x hebben en alle plaatsen van een klant moeten in 1 veld komen in een bepaald formaat, zodat ik daar eventueel ook weer op kan sorteren.
Eigenlijk moet hij dus van elke klant de plaatsen ophalen uit de tabel Plaatsen en dit vervolgens in een bepaald formaat in een extra veld stoppen.

Is dit mogelijk met SQL? Zoja, hoe doe ik dit dan?

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • whoami
  • Registratie: December 2000
  • Laatst online: 21:42
Wat bedoel je met
in een nieuwe cel stoppen
?

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 21:42
Het is wel mogelijk om alle plaatsen van een klant op te halen met een gewone join, en je kunt ze ook nog eens binnen klant sorteren door gewoon een ORDER BY te doen, eerst op klant en daarna op plaatsnaam.

https://fgheysels.github.io/


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Nou, dat er een extra veld bij komt (in een query dus), laten we hem Plaatsen noemen, waar de alle plaatsen van die klant in een bepaald formaat.

Laten 2 klanten pakken uit het voorbeeld hierboven. Dan zou de query dit moeten geven:
code:
1
2
3
ID     Naam     Adres    Woonplaats    Plaatsen
1   Piet     Straat 1    Amsterdam     44 (Plaats1), 43 (Plaats2), 212 (Plaats3)
2   Jan Straat 2    Rotterdam     55 (Plaats4), 22 (Plaats5), 332 (Plaats8)

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • whoami
  • Registratie: December 2000
  • Laatst online: 21:42
Je kunt een stored procedure maken waarvan de header er als volgt uitziet:
code:
1
GetPlaatsen(klantid)

Die procedure gaat dan voor het opgegeven klantid alle plaatsen gaan ophalen en die in een string zetten (comma-separated ofzo) en die dan gaan returnen.

Dan kan je SQL statement er als volgt uitzien:
code:
1
2
SELECT klant, GetPlaatsen(klantid)
FROM klant

https://fgheysels.github.io/


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Uuhmm, ik maak gebruik van een zeer oude DBase database, en die kent volgens mij geen stored procdures.

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • whoami
  • Registratie: December 2000
  • Laatst online: 21:42
Hmm. Dan denk ik niet dat je het met gewoon SQL kunt oplossen.

Moet het perse zo (in dat formaat) uit uw databank opgehaald worden? Anders kun je die gegevens natuurlijk gewoon gaan ophalen en dan in uw code gaan formatteren.

https://fgheysels.github.io/


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Dat kan idd ook wel, maar ik dacht dat dit wel kon, scheelt me weer wat programmeren. Vooral omdat ik het ook moet kunnen sorteren. Ik wil namelijk dat je ook op die Plaatsen kunt sorteren.

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • whoami
  • Registratie: December 2000
  • Laatst online: 21:42
De query waarmee je de plaatsen ophaalt gaan sorteren en ze dan in die volgorde aan elkaar gaan plakken, dat moet toch ook kunnen?
Je kunt het op dezelfde manier aanpakken als met die SP-methode, maar dan in uw programma-code ipv dat de DB alles doet. (+ nog wat extra programmeer werk). Maar al bij al zal het wel meevallen.

Tenzij er iemand anders is die zegt dat het wel kan mbhv SQL en die daarbij ook nog eens zegt hoe.

https://fgheysels.github.io/


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Uuhmm, snap je niet echt. Zou je het anders kunnen uitleggen?


Weet iemand verder nog een idee/oplossing?

"The shell stopped unexpectedly and Explorer.exe was restarted."

Pagina: 1