3 unterschiedliche Zeilen ausgeben

R

Ronax

Ich habe folgende Situation und suche nach einer eleganten Lösung:

Tabelle1
-----------------------------------
kommentare_artikel_id |
-----------------------------------
1 |
1 |
2 |
3 |
4 |
4 |
-----------------------------------

Tabelle 2
------------------------------------
artikel_name | artikel_id |
------------------------------------
'test' | 1 |
'test2' | 2 |
'test3' | 3 |
'test4' | 4 |
-----------------------------------

Mit folgendem Query:
Code:
		SELECT *
			FROM tabelle1, tabelle2
			WHERE artikel_id = kommentare_artikel_id
			ORDER BY kommentare_datum DESC
			LIMIT 0,3

Erhalte ich artikel_name: test, test, test2.

Eine umständliche Lösung wäre für mich sql neuling das Limit wegzulassen und dann in der Ausgabe die drei ersten sich voneineander unterscheidenen Zeilen auszugeben. Mein Problem ist also, dass ich doppelte Einträge ausschließen möchte.

vielen Dank schomal im Vorraus
Florian
 
Okay, also er gibt mir jetzt 3 verschiedenartige Zeilen aus, jedoch in der falschen Reihenfolge...und zwar erhalte ich test2, test, test3 statt... test, test2, test3

Code:
SELECT DISTINCT kommentare_artikel_id...
 
na du hast ja ein order by drinnen, daher wirds auch nach kommentare_datum sortiert
Code:
... ORDER BY kommentare_datum DESC
 
Da DISTINCT auch nur eine Gruppierung (GROUP BY) ist, hast Du auch hier keinen Einfluss darauf, welcher Datensatz bestehen bleibt.

Eine Lösung wäre ein Subquery, eine andere der Workaround von Tom.

Gruß hpvw
 
ninguno hat gesagt.:
na du hast ja ein order by drinnen, daher wirds auch nach kommentare_datum sortiert
Code:
... ORDER BY kommentare_datum DESC
Ich weiß, wurde aus meinen Beispiel nicht ersichtlich, aber genau deswegen sollte ja test, test2 und test3 'rauskommen.
 
wie schaut denn deine query jetzt aus?
und wie schauen die daten aus?
reicht nicht ein
Code:
... ORDER BY kommentare_datum DESC, artikel_name
 
Mitlerweile schaut meine Abfrage so aus (ist ein wenig 'was hinzugekommen)
Code:
SELECT DISTINCT kommentare_artikel_id
FROM kommentare 
LEFT JOIN artikel ON artikel_id = kommentare_artikel_id
ORDER BY kommentare_datum DESC		
LIMIT 0,3
Die Tabelle kommentare so (ORDER BY kommentare_datum DESC)
------------------------------------------
kommentare_artikel_id |
------------------------------------------
3 |
3 |
3 |
2 |
1 |
------------------------------------------

Er sollte also ausgeben 3,2,1...
stattdessen erhalte ich jedoch 2,3,1

Als wenn der Cursor die Zeilen durchläuft und dann 'oops' jetzt kommt eine neue, also nehmen wir die neue und dann die davor und gehen weiter?

Den Workaround habe ich leider nicht verstanden, werde es aber nochmal versuchen...

vielen Dank
Florian

PS:
bei
Code:
SELECT DISTINCT kommentare_artikel_id, kommentare_id
,wobei 'kommentare_id' in 'kommentare' steht, erhalte ich dreimal die 3... *seufz*
 
Zuletzt bearbeitet von einem Moderator:
...ich habe tabelle1 t1 übersehen. Habe mich also gewundert wo da die zweite Tabelle herkommt. Ok, also es klappt jetzt...nur noch schnell eine Verständnisfrage:
Handelt es hierbei um einen SELF JOIN, oder wie das heißen mag?

vielen Dank
Florian
 

Neue Beiträge

Zurück