#1060 - Duplicate column name 'topicid'
Voodoo
- datenbank
Guten Tach!
Ich noch einmal (hoffentlich das letzte Mal).
Meine Tabelle:
-------------------------------------------------
| id | fid | tid | date | title | autor |
-------------------------------------------------
| 1 | 2 | 1 | 143456 | Hier und so | me |
| 2 | 2 | 1 | 435868 | Bdlllaaa | him |
| 3 | 2 | 2 | 322455 | ... Aja | we |
| 4 | 2 | 2 | 012343 | Hmpfa! | her |
Ich brauch nun eine Query, die mir aus fid = 2
1. für jede tid den kleinsten Wert an date und restliche Spalten liefert (Also den ältesten Datensatz).
2. für jede tid den größten Wert an date und restliche Spalten liefert (also den neusten Datensatz).
3. Beides über die tid verbindet.
Nach einigem Überlegen habe ich nun folgenden Query:
SELECT * FROM
(SELECT * FROM
(SELECT topicid, MIN(datum) mi FROM maris_board_posts GROUP BY topicid) minq,
maris_board_posts tab2
WHERE
tab2.forumid = 2
AND
tab2.topicid = minq.topicid
AND
tab2.datum = minq.mi) frage1,
(SELECT * FROM
(SELECT topicid, MAX(datum) ma FROM maris_board_posts GROUP BY topicid) maxq,
maris_board_posts tab1
WHERE
tab1.forumid = 2
AND
tab1.topicid = maxq.topicid
AND
tab1.datum = maxq.ma) frage2
WHERE
frage1.topicid = frage2.topicid
Hierbei erhalte ich aber die betitelte Fehlermeldung. Natürlich kann es sein, dass mein Ansatz total dämlich ist oder sonst etwas. Ansonsten wäre es hilfreich zu erfahren, an welcher Stelle die Spalte doppelt vorkommt.
Ich bin gespannt :)
Gruß
Voodoo
Hallo
Guten Tach!
Ich noch einmal (hoffentlich das letzte Mal).
Meine Tabelle:| id | fid | tid | date | title | autor |
| 1 | 2 | 1 | 143456 | Hier und so | me |
| 2 | 2 | 1 | 435868 | Bdlllaaa | him |
| 3 | 2 | 2 | 322455 | ... Aja | we |
| 4 | 2 | 2 | 012343 | Hmpfa! | her |Ich brauch nun eine Query, die mir aus fid = 2
1. für jede tid den kleinsten Wert an date und restliche Spalten liefert (Also den ältesten Datensatz).
2. für jede tid den größten Wert an date und restliche Spalten liefert (also den neusten Datensatz).
3. Beides über die tid verbindet.Nach einigem Überlegen habe ich nun folgenden Query:
SELECT * FROM
Hier geht es schon los:
Verwende nicht SELECT \*
Verwende Tabellenaliase
und gehe hübsch Schritt für Schritt vor:
1\. Erstelle die Query, die Dir für jede tid den Datensatz mit dem kleinsten Wert von "date" (und den restlichen Spalten) erstellt.
2\. Erstelle die Query, die Dir für jede tid den Datensatz mit dem größten Wert von "date" (und den restlichen Spalten) erstellt.
Dazu hatte ich Dir ja schon den Link zu korrelierten Subselects gepostet.
3\. Verbinde beide Queries mit einem INNER JOIN über die tid.
Verwende Aliasnamen für die beiden Queries als temporärer Join.
Denke daran, dass Du in einer Zeile jeweils die zugehörigen Werte zum kleinsten als auch zum größten date-Wert hast. Im Original heißen die Spalten gleich. Benenne sie zum bequemeren Zugriff in der API unterschiedlich.
Freundliche Grüße
Vinzenz