SQLite: Sortierung 1,2,3,4,1,2,3,4. Wie?

OP #5595643
Lesenswert?

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
Gast #5595693
Lesenswert?

Ä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
Lesenswert?

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.
OP #5595835
Lesenswert?

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
Lesenswert?

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 #5599694
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren