Hallo, ich brauche eure Hilfe, ich schreibe gerade ein Programm mit sqlite für eine Bestückungsmaschine, die 4 Köpfe hat. Jetzt möchte ich die Daten mit sqlite so sortieren, dass bei jeder Fahrt alle Köpfe voll sind. Angebommen ich habe eine Tabellle mit Komponenten Kopf,Bauteil 1,A1 2,B1 3,C1 4,D1 1,A2 2,B2 3,C3 4,D4 so möchte ich das sortiert haben. Gibt es irgendwie in Sqlite dafür eine elegante Lösung? Danke, -Michael
Aus einer aufsteigenden Zahl mit Modulo 4 plus 1 die gewünschte Nummer 1..4 erzeugen?
Die Zahlen sind so in der Tabelle, und die darf ich nicht ändern. Ich muss die nur sortieren.
Gast
#5595693
Äh, ja, dass die so in der Tabelle sind und Du die nicht verändern darfst ist schon klar, dafür "programmiert" man ja auch SQL drumrum ;-) Kannst Du etwas mehr über die Tabelle preisgeben ? einen DUMP hier reinstellen, mitsamt CREATE STATEMENT ? Dann kann man etwas besser an der Sortierung arbeiten, die dann letztendlich im Abfragecode passieren muss. Nicht ganz unwichtig ist natürlich der Trigger auf Seiten deiner Maschine, d.h. WAS löst das neubefüllen aus bzw. wie bekommst Du das Rückgemeldet ? Hängt ein Programm dazwischen, was quasi eine Zustandsüberwachung macht ? SQLite muss ja irgendwie erfahren, was sich in der Zwischenzeit geändert hat, damit es einen neuen Datensatz selektieren und ggf. erneuern kann. Versteh ich das richtig, Du hast Kopf 1 bis 4 und pro Kopf kommt immer das gleiche Bauteil rein, Also Bauteil Typ A immer in Kopf 1, Bauteil Typ B immer in Kopf 2 usw .? Sobald Kopf 1 seinen Job erledigt hat soll er mit einem neuen Bauteil Typ A beladen werden ? Gruß
Gast
#5595706
Michael H. schrieb: > Die Zahlen sind so in der Tabelle, und die darf > ich nicht ändern. Ich muss die nur sortieren. "Wasch' mich, aber mach' mich nicht nass"? Eine Sortierung ist doch auch eine Veränderung. Abgesehen davon hat Rufus den Weg schon vorgezeichnet: Je Kopf eine (ggf. sortierte) Liste erstellen; die Elemente dieser Listen aufsteigend nummerieren -- aber: Die Nummern in Liste A werden nach 4*N gebildet, die Nummern in Liste B nach 4*N+1 usw. Anschließend Listen verketten und nach der laufenden Nummer sortieren.
Egon D. schrieb: > Abgesehen davon hat Rufus den Weg schon vorgezeichnet: > Je Kopf eine (ggf. sortierte) Liste erstellen; die > Elemente dieser Listen aufsteigend nummerieren -- aber: > Die Nummern in Liste A werden nach 4*N gebildet, die > Nummern in Liste B nach 4*N+1 usw. Danke, das war die Lösung. Im Prinzip setze ich aus ganz vielen Joins erstzmal eine temporäre Tabelle auf. Die kann ich dann auslesen, und wie du beschrieben hast nummerieren. Die geben ihre Werte auf 'ne zweite Tabelle aus, welche dann sortiert werden. Vielen Dank an euch, für sowas liebe ich das Forum.
Gast
#5596051
Michael H. schrieb: > Im Prinzip setze ich aus ganz vielen Joins > erstzmal eine temporäre Tabelle auf. Die kann ich dann auslesen, und wie > du beschrieben hast nummerieren. Die geben ihre Werte auf 'ne zweite > Tabelle aus, welche dann sortiert werden. Solange du dann nicht in der nächsten Bewerbung angibst: "Gute Datenbank- und SQL-Kenntnisse", ...
Gast
#5596065
In richtiger SQL würde das ein "group by" wohl erreichen. Benutze halt was anständiges und nicht dieses Krüppel-sqlite.
Gast
#5596072
Ich dachte, man kann bei einer SQL-Abfrage auch immer ein 'Order By' angeben. Dann sollte doch bei dem Select die Sortierung erfolgen. Oder habe ich das jetzt falsch verstanden?
PittyJ schrieb: > Ich dachte, man kann bei einer SQL-Abfrage auch immer ein 'Order By' > angeben. Kann man. Aber nach was willst Du sortieren, wenn die Ausgabe so aussehen soll, wie im ersten Beitrag?
Gast
#5596427
> Solange du dann nicht in der nächsten Bewerbung angibst: "Gute > Datenbank- und SQL-Kenntnisse", ... kann er doch jetzt machen, bißchen Hilfe, Copy&Paste macht's möglich :-)
Gast
#5596488
Soziologe schrieb: > Benutze halt was anständiges und nicht > dieses Krüppel-sqlite. Dieses "Krüppel" SQLite kann auch group by...
Gast
#5599694
Michael H. schrieb: > Hallo, > > ich brauche eure Hilfe, ich schreibe gerade ein Programm mit sqlite für > eine Bestückungsmaschine, die 4 Köpfe hat. > > Jetzt möchte ich die Daten mit sqlite so sortieren, dass bei jeder Fahrt > alle Köpfe voll sind. > > so möchte ich das sortiert haben. Gibt es irgendwie in Sqlite dafür eine > elegante Lösung? Eher nicht, besonders weil sqlite keine stored procedures hat. Du versuchst unnötigerweise die Programmlogik in SQL abzubilden. Wenn bei jeder fahrt alle 4 Köpfe voll sein sollen, dann kannst du doch einfach die nächsten 4 Bauelemente aus entsprechender Tabelle nehmen und sie im Program der Köpfen "zuweisen" und fertig.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
Ist die Reihenfolge pro Kopf wirklich nach Bauteil-Name geordnet? Wenn's zufällig sein kann, lass "ORDER BY Bauteil" weg.
Michael H. schrieb: > Angebommen ich habe eine Tabellle mit Komponenten > > Kopf,Bauteil > 1,A1 > 2,B1 > 3,C1 > 4,D1 > 1,A2 > 2,B2 > 3,C3 > 4,D4 > > so möchte ich das sortiert haben. Gibt es irgendwie in Sqlite dafür eine > elegante Lösung?
1 | |
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.