login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Left join orderen en limiteren

Offline ThAlmighty - 30/10/2007 20:17 (laatste wijziging 30/10/2007 20:18)
Avatar van ThAlmightyHTML beginner Hoe kan ik een ORDER BY of LIMIT aangeven voor een LEFT JOIN? Even in praktijk brengen. Ik heb een tabel met auto's en een tabel met foto's. Bij elke auto zitten meerdere foto's. Elke foto heeft een prioriteit die aangeeft hoe belangrijk deze is. Nu wil ik een lijst krijgen met elke auto's plus slechts 1 foto en wel deze met de hoogste prioriteit.

Het kan natuurlijk ook anders dan met die left join, maar ik zou niet weten hoe?

Dit had ik al (hier komt de eerst toegevoegde foto uit), maar dit moet waarschijnlijk helemaal anders worden (ik geef dit mee ter illustratie van het probleem):
  1. SELECT cars.* photos.photo_pic
  2. FROM cars
  3. LEFT JOIN photos ON photos.car_id=cars.car_id
  4. GROUP BY car_id
  5. ORDER BY cars.car_name ASC

2 antwoorden

Gesponsorde links
Offline marten - 30/10/2007 20:23
Avatar van marten Beheerder Je geeft bij je select gewoon aan wat je wilt zoals in je voorbeeld. Dan kan je bij order by gewoon photos.photo_pic doen.
Offline ThAlmighty - 30/10/2007 20:30 (laatste wijziging 30/10/2007 20:41)
Avatar van ThAlmighty HTML beginner Dat is dus het probleem, er komen meerdere foto's uit. Ik wil er maar 1 hebben en wel degene met de hoogste prioriteit.

Ik heb het btw inmiddels opgelost. Door middel van een subquery, zo ziet de query er nu uit (voor de geinterreseerde):
  1. SELECT cars.*, photo_pic, photo_prior FROM cars
  2. LEFT JOIN photos ON photos.car_id=cars.car_id
  3. WHERE photos.photo_prior = (
  4. SELECT MAX(photo_prior)
  5. FROM photos
  6. WHERE car_id = photos.car_id
  7. )
  8. ORDER BY (...)
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.339s