webForumDet fria alternativet

Join + groupby

8 svar · 413 visningar · startad av tronez

tronezMedlem sedan juli 2001728 inlägg
#1

Hej,

Försöker göra ett litet nyhetsscript i asp, men har fastnat på en SQL sak.

tabell nyheter
id| rubrik | ingress | nyhet | start

tabell nyheter_bilder
id | nyhet_id | url |

Varje nyhet kan ha flera bilder kopplade till sig, men när jag visar alla nyheter i ett arkiv sp vill jag bara visa en bild.

tex;

Rubrik1 ------------ bild
Rubrik2 ------------ bild

SELECT n.rubrik, n.ingress, n.id as iid, n.start, d.url 
FROM nyheter AS n 
LEFT JOIN nyheter_bilder as d 
ON n.id = d.nyhet_id 
GROUP BY d.url, n.id, n.rubrik, n.ingress, n.start 
ORDER BY n.start DESC

Ovan är koden jag pulade fram men den skriver fortfarande ut alla poster som har fler än en bild

tex;

Rubrik1 ----- bild1
Rubrik1 ----- bild2
Rubrik1 ----- bild3
Rubrik2 ----- bild1

Någon som ser något som kan hjälpa mig på vägen?

LarsGMedlem sedan dec. 200012 464 inlägg
#2

Om det finns flera bilder, vilken vill du visa då?

tronezMedlem sedan juli 2001728 inlägg
#3

Den första räcker gott och väl. Det är en Accessdatabas omdet ar nån betydelse

LarsGMedlem sedan dec. 200012 464 inlägg
#4

Först med avseende på vad?

tronezMedlem sedan juli 2001728 inlägg
#5

Första id:et i nyheter_bilder tabellen ( inte nyhet_id , utan id )

LarsGMedlem sedan dec. 200012 464 inlägg
#6

Du menar lägst id?

SELECT n.rubrik, n.ingress, n.id as iid, n.start, d.url 
FROM nyheter AS n 
LEFT JOIN nyheter_bilder as d 
ON n.id = d.nyhet_id 
where d.id in 
 (select min(id)
    from nyheter_bilder as q
   where q.nyhet_id = d.nyhet_id)
ORDER BY n.start DESC

Du skall inte förutsätta att poster lagras i den ordning som dom stoppas in i tabellen.

tronezMedlem sedan juli 2001728 inlägg
#7

LarsG skrev:

Du menar lägst id?

SELECT n.rubrik, n.ingress, n.id as iid, n.start, d.url 
FROM nyheter AS n 
LEFT JOIN nyheter_bilder as d 
ON n.id = d.nyhet_id 
where d.id in 
 (select min(id)
    from nyheter_bilder as q
   where q.nyhet_id = d.nyhet_id)
ORDER BY n.start DESC

Du skall inte förutsätta att poster lagras i den ordning som dom stoppas in i tabellen.

Den funkar ungefär som jag vill, men jag vill dock visa alla nyheter, öven de som inte har någon bild

LarsGMedlem sedan dec. 200012 464 inlägg
#8
SELECT n.rubrik, n.ingress, n.id as iid, n.start, d.url 
FROM nyheter AS n 
LEFT JOIN nyheter_bilder as d 
ON (n.id = d.nyhet_id 
and d.id in 
 (select min(id)
    from nyheter_bilder as q
   where q.nyhet_id = d.nyhet_id))
ORDER BY n.start DESC
tronezMedlem sedan juli 2001728 inlägg
#9

LarsG skrev:

SELECT n.rubrik, n.ingress, n.id as iid, n.start, d.url 
FROM nyheter AS n 
LEFT JOIN nyheter_bilder as d 
ON (n.id = d.nyhet_id 
and d.id in 
 (select min(id)
    from nyheter_bilder as q
   where q.nyhet_id = d.nyhet_id))
ORDER BY n.start DESC

Syntax error. in query expression 'n.id = d.nyhet_id and d.id in (select min(id) from nyheter_bilder as q where q.nyhet_id = d.nyhet_id)'.

125 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)