Ich bräuchte da mal hifle mit einer SELECT / ORDER BY anweisung...

LrIuNlUzX

Mitglied
hi
ich habe in einer tabelle eine spalte 'id' (autoinc) und eine spalte 'at' und noch einige andere, die aber nicht wichtig sind.
jetzt will ich folgendes machen:

es wird ein datensatz erstellt, und damit ein 'id' wert erzeugt z.b. 23 und 'at' wird auf 0 gesetzt.
wrid jetzt ein datensatz erstellt, der zu dem ersten gehört wird 'at' auf 23 gesetzt, um zu erkennen, das er zum datensatz mit der id 23 gehört.

jetzt habe ich mehrere solche datensatze in der tabelle und ich will die so ausgeben, das die ich zwar nur die die zeilen bekomme wo 'at' = 0 ist aber sortiert nach der häufigkeit der vorkommenden 'id' in der 'at'-spalte !

versteht ihr was ich meine? ich hoffe doch, und der kann mir dann auch noch weiterhelfen.
 
Hallo!

Hat jetzt ne Weile gedauert bis ich das ganze gecheckt habe.

Eine Lösung habe ich auch keine, aber vielleicht einen Ansatz.
Schlagt mich bitte nicht wenn ich komplett daneben liege, aber ich würde es so
versuchen (Achtung jetzt wirds kompliziert!):

Alle Zeilen auslesenbei denen at=0 ist.
Dann über eine Schleife eine Weitere Abfrage machen wie oft die jeweilige ID
der ausgegebenen Zeilen in der Spalte at drin ist. Diesen Wert jeweils in eine Variable speichern und nach diesen Ergebnissen dann sortieren.

Oder liege ich da jetzt komplett falsch.

mfg Hoizwurm
 
jo... ;)
das wär auch eine lösung, aber nichte gerade eine elegante lösung, oder ?
ich würde dies lieber mit einer sql - anweisung machen.
man muß ja auch an die rechenlast denken, die durch so eine umständlich sortierung auftrit.

ich habe's mal mit COUNT(*) versucht, komm aber nicht auf das gewünschte ergebnis. ich bekomm zwar die anzahl wie oft eine bestimmte id in at vorkommt. aber ich krig das irgentwie nicht mit dem select verbunden, der es dann nach den häufigsten vorkommnissen ausgeben soll.

irgentwie muß man doch 2 select anweisungen ineinander verschachtel können und das und die ergebneis interne / untereinander weiter verarbeiten können ... oder ? eigentlich schon.

ne idee ist die zeile aus der tabelle zu lesen bei denen at=0 und die id die ich als rückgabe bekomme im 2. select über count an der spalte at die vorkommnise der id zu zählen. und das ergebnis davon für den order by zu verwenden.

soweit so gut... jetzt nur noch in sql, und es würde passen ;)))
 
Code:
SELECT at "ID", count(id) as "Anzahl Referenzen", Sonstiges as "Sonstiges"
FROM   tabellen_name
WHERE  at<>0
GROUP BY at, Sonstiges
ORDER BY "Anzahl Referenzen" DESC
;
Funktioniert bedingt:
Wenn es einen Datensatz mit at=0 gibt wird er nur angezeigt wenn mindestens ein anderer Satz im at-Feld auf ihn zeigt.
z.B. id=5, at=0 würde nur angezeigt wenn ein anderer Satz auf ihn zeigt, z.B. id=6,at=5

Vielleicht fällt dir dazu ein wie man das verbessern könnte.

Falls du mit PL/SQL arbeiten kannst würde es da sicher leichter gehen.
 
Zurück