Hallo,
ich komme leider nicht mehr weiter.
Ich habe eine Tabelle user as u
und eine Tabelle pictures as p
Ich will folgendes Ergebnis haben:
Sortiert nach dem Wert pid will ich die Tabelle user absteigend ausgeben und pro User die letzten 4 Bilder anzeigen lassen (wieder sortiert nach pid absteigend).
Ich habe mit folgendem SQL-Code rumprobiert, der aber dazu führte das mein SQL-Server 10 Stunden nicht erreichbar war, deshalb bin ich noch nicht so weit gekommen.
Ich wollte immer den größten pid-Wert abfragen und beim Left join die bereit abgefragten ausschließen...
Ich weiss, das das da oben nicht funktionieren wird, ich würde mich sehr über einen funktionierenden Ansatz freuen.
Gruß fuchs2
ich komme leider nicht mehr weiter.
Ich habe eine Tabelle user as u
Code:
u.user_id | u.username
Code:
p.pid | p.user_id
Sortiert nach dem Wert pid will ich die Tabelle user absteigend ausgeben und pro User die letzten 4 Bilder anzeigen lassen (wieder sortiert nach pid absteigend).
Ich habe mit folgendem SQL-Code rumprobiert, der aber dazu führte das mein SQL-Server 10 Stunden nicht erreichbar war, deshalb bin ich noch nicht so weit gekommen.
Code:
SELECT u.user_id, u.username, max(p1.pid) as p1_pid, p2.pid as p2_pid, p3.pid as p3_pid, p4.pid as p4_pid FROM users as u LEFT JOIN pictures as p1 on (p1.user_id=u.user_id) LEFT JOIN pictures as p2 on (p2.user_id=u.user_id) LEFT JOIN pictures as p3 on (p3.user_id=u.user_id) LEFT JOIN pictures as p4 on (p4.user_id=u.user_id) GROUP BY u.user_id, u.username
Code:
SELECT u.user_id, u.username, max(p1.pid) as p1_pid, max(p2.pid) as p2_pid, max(p3.pid) as p3_pid, max(p4.pid) as p4_pid FROM users as u LEFT JOIN pictures as p1 on (p1.user_id=u.user_id) LEFT JOIN pictures as p2 on (p2.user_id=u.user_id and p2.pid!=p1_pid) LEFT JOIN pictures as p3 on (p3.user_id=u.user_id and p3.pid!=p1_pid and p3.pid!=p2_pid) LEFT JOIN pictures as p4 on (p4.user_id=u.user_id and p4.pid!=p1_pid and p4.pid!=p2_pid and p4.pid!=p3_pid) GROUP BY u.user_id, u.username
Gruß fuchs2
Comment