[SQL] Is dit mogelijk ?

Pagina: 1
Acties:

  • Bartoz
  • Registratie: November 2000
  • Niet online
Om twee records uit twee verschillende databases te vergelijken heb ik een query geschreven.

Het resultaat waarin 1 left join zit (one-to-many) geeft het volgende resultaat

[Naam] [Achternaam] [Telefoon]

Bert Raders 12345
Bert Raders 54321
Bert Raders 41234

Een persoon kan dus meerdere telefoontnummers hebben. Om te vergelijken moeten al deze gegevens in 1 record ipv 3 records:

Bert Raders 12345 54321 41234

Is dit mogelijk via een query ? Heb al heel wat geprobeerd maar heb geen idee hoe ik dit moet aanpakken.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Zoek eens op pivot table ;)
Overigens vermeld je niet welke SQL je gebruikt...En zie ik het nut er niet zo van in van wat je wil...

[ Voor 67% gewijzigd door RobIII op 03-12-2004 11:42 ]

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


  • Morrar
  • Registratie: Juni 2002
  • Laatst online: 15-05 19:40
JE kan in MySQL (vanaf 4.1 geloof ik) wel een string ervan maken:

SELECT `naam`, `achternaam`, GROUP_CONCAT(DISTINCT `Telefoon`)
FROM `table`
GROUP BY `naam`, `achternaam`;

Je krijgt dan 1 string terug met alle (unieke) telnummers gescheiden door komma's

  • Bartoz
  • Registratie: November 2000
  • Niet online
Morrar schreef op vrijdag 03 december 2004 @ 13:47:
JE kan in MySQL (vanaf 4.1 geloof ik) wel een string ervan maken:

SELECT `naam`, `achternaam`, GROUP_CONCAT(DISTINCT `Telefoon`)
FROM `table`
GROUP BY `naam`, `achternaam`;

Je krijgt dan 1 string terug met alle (unieke) telnummers gescheiden door komma's
Helaas maak ik gebruik van MySql 4.0.20 en mist deze functie. Ik ben nu aan het kijken of het via Pivot Query kan. Maar das best lastig merk ik....

  • Bartoz
  • Registratie: November 2000
  • Niet online
Vanwege de tijdsdruk heb ik mijn probleem op een dirty manier opgelost. De uiteindelijke query ziet er alsvolgt uit:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT 
SUM(IF(RegistrationTypes.MTS_Id=1,RegistrationTypes.MTS_Id,NULL)) as MTS1,
SUM(IF(RegistrationTypes.MTS_Id=2,RegistrationTypes.MTS_Id,NULL)) as MTS2,
SUM(IF(RegistrationTypes.MTS_Id=3,RegistrationTypes.MTS_Id,NULL)) as MTS3,
SUM(IF(RegistrationTypes.MTS_Id=4,RegistrationTypes.MTS_Id,NULL)) as MTS4,
SUM(IF(RegistrationTypes.MTS_Id=5,RegistrationTypes.MTS_Id,NULL)) as MTS5,
SUM(IF(RegistrationTypes.MTS_Id=6,RegistrationTypes.MTS_Id,NULL)) as MTS6,
SUM(IF(RegistrationTypes.MTS_Id=7,RegistrationTypes.MTS_Id,NULL)) as MTS7,
EventItems . * , PriceOfEvent.POE_Id, PriceOfEvent.POE_Member, PriceOfEvent.POE_NonMember, PriceOfEvent.PTE_Id
FROM EventItems
LEFT JOIN PriceOfEvent ON EventItems.POE_Id = PriceOfEvent.POE_Id
LEFT JOIN RegistrationTypes ON EventItems.EVS_Id = RegistrationTypes.EVS_Id
WHERE EventItems.ETS_Id = 1 AND Year( EventItems.EVS_StartDate ) = 2005
GROUP BY EventItems.EVS_Id


Daarmee krijg ik het resultaat zoals ik wil:

code:
1
2
MTS1  MTS2  MTS3  MTS4  MTS5  MTS6  MTS7 EVS_Id EVS_Title
1       2    5    7     8     10    3     51    Insights

Ik had als voorbeeld in mijn 1e post de boel versimpeld. Het ging om het idee...