[SQL] De JOIN een LIMIT geven

Pagina: 1
Acties:

  • pderaaij
  • Registratie: Oktober 2005
  • Laatst online: 18-08-2025
Hallo allen,

Ik heb de volgende query
code:
1
2
3
4
SELECT ref.id, ref.sEvent, ref.dEventDate, rphot.sThumbLocation 
FROM tblReference ref 
LEFT JOIN tblRefPictures rphot ON rphot.reference_id = ref.id 
WHERE ref.iLanguageID=1


Nu werkt dit wel alleen is het nog niet helemaal wat ik wil.

Ik heb dus twee tabellen. De tabel tblReference en de tabel tblRefPictures. In de tblReference staat een unieke referentie en in de tabel tblRefPictures kunnen meerdere record met verwijzingen naar foto's van één referentie staan. Een één op veel relatie dus.

Alleen nu zou ik graag door middel van één query, een referentie ophalen met één record uit de tblRefPictures. Dus een referentie met maar één foto in plaats van allemaal.

Alleen nu is mijn vraag hoe limit ik dit in de query? Want als ik op het eind LIMIT 0,1 zet, krijg ik maar één referentie terug in plaats van maar één foto bij één referentie.

Wie kan mij helpen?

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 17:49

NMe

Quia Ego Sic Dico.

GROUP BY? :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:05
GROUP BY zonder aggregate ?

https://fgheysels.github.io/


  • KabouterSuper
  • Registratie: September 2005
  • Niet online
Je zou als aggregate de max operator kunnen nemen....je moet toch wat! Of anders proberen om een random rij te pakken.

When life gives you lemons, start a battery factory


  • frickY
  • Registratie: Juli 2001
  • Laatst online: 09-04 16:59
Als je altijd bij elke referentie 1 foto wilt, en dus ook geen referenties zonder foto's, kun je toch gewoon een inner join gebruiken?

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:05
Je kan het ook met een correlated subquery doen.

code:
1
2
3
4
5
6
select ref.id, ref.sEvent, ref.dEventDate, 
          ( select rphot.sThumbLocation
            from tblRefPictures rphot
            where rphot.reference_id = ref.id
            limit 0, 1 )
from tblReference ref
frickY schreef op vrijdag 10 februari 2006 @ 23:06:
Als je altijd bij elke referentie 1 foto wilt, en dus ook geen referenties zonder foto's, kun je toch gewoon een inner join gebruiken?
Niet als een referentie meer dan 1 foto geeft, want dan worden alle foto's gereturned.

[ Voor 38% gewijzigd door whoami op 11-02-2006 08:47 ]

https://fgheysels.github.io/


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 17:49

NMe

Quia Ego Sic Dico.

Je kan geen limit gebruiken in subqueries, helaas. :)
Je kan altijd, KabouterSuper al zegt, MAX(veld) als aggregaat gebruiken. Verder zijn er in MySQL niet veel opties.

Althans, ik neem door het gebruik van LIMIT maar aan dat het om MySQL gaat, want andere smaken van SQL kennen AFAIK geen LIMIT.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:05
-NMe- schreef op zaterdag 11 februari 2006 @ 13:25:
Je kan geen limit gebruiken in subqueries, helaas. :)
Tsss.... Wat een DB is dat zeg...
Je kan altijd, KabouterSuper al zegt, MAX(veld) als aggregaat gebruiken. Verder zijn er in MySQL niet veel opties.
Da's idd een optie, maar, dan moet je er ook wel voor zorgen dat je velden in je select list opneemt, die ervoor zorgen dat je meer dan 2 rijen terugkrijgt.

https://fgheysels.github.io/


  • pderaaij
  • Registratie: Oktober 2005
  • Laatst online: 18-08-2025
een beetje late reactie, maar ik was er door mijn verjaardag van het weekend niet aan toegekomen. Ik heb nu deze query

code:
1
2
3
4
5
SELECT ref.id, ref.sEvent, ref.dEventDate, rphot.sThumbLocation
FROM tblReference ref
LEFT JOIN tblRefPictures rphot ON rphot.reference_id = ref.id
WHERE ref.iLanguageID =1
GROUP BY rphot.reference_id


en die doet precies wat ik wil. Bedankt voor jullie hulp!
Pagina: 1