help me please in mysql

oursql

Mitglied
hallo@all,
vorweg möchte ich sagen, das ich nicht der Experte in sql bin und daher eure Hilfe benötige.
Wir haben eine MysqlDatenbank mit einigen Tabellen und Daten, diese auszugeben und zu sortieren mit ORDER BY funktioniert auch.
Unser Prob ist ,das wir täglich eine Liste ( .txt Format ) bekommen in der die Reihenfolge strikt vorgegeben ist ,wie die Daten zu sortieren sind. Heisst wir müssten hunderte von Daten via SQL- Befehl täglich sortieren, etwas zeitaufwendig daher meine Frage und Überlegungen ....

1.Gibt es eine Möglichkeit die Sortierreihenfolge der Datenbank per .txt Datei vorzugeben ?
- So nach dem Schema ORDER BY TEXTDATEI oder da sich ja diese txt. Datei in jedes belibiges Format umwandeln lässt zb ORDER BY MYSQLTABELLE1 -

Ich wäre euch sehr dankbar ,wenn mir jemand einen Lösungsvorschlag nennen könnte, da ich mit meinen Überlegungen nicht sehr weit komme.Vielleicht kann es ja auch nur mit PHP, Java oder ASP realisiert werden ... ...ich weiss es nicht und hoffe jemand weiss es....

Gruss
Flo
 
Was steht denn in der MySQL Tabelle und was steht in dem Txt File?
 
Beide enhalten die selben Daten, nur die Reihenfolge ändert sich in der .txt Datei täglich und willkürlich.

Gruss
 
Wenn beide die selben Daten enthalten und in dem Textfile die Reihenfolge vorgegeben ist, musst du nichts mehr sortieren, da die Daten und Reihenfolge in dem Textfile ja bereits das gewünschte Ergebnis enthält.

Ist mir auch klar, dass das wohl nicht so ist, aber aus den zwei Sätzchen von oben liesst man das heraus.

Eine bessere Ueberschrift und eine verständliche Problembeschreibung helfen sehr viel, wenn man auf seine Frage eine vernünftige Antwort bekommen will.

Gruss

Thomas

 
Hab mir schon gedacht das so eine Antwort kommt, aber ich denke man kann lesen was ich mein und wenn es dafür keine Lösung gibt bzw. man dafür keine Lösung weiss, ist es ok.
Klar könnte ich erklären welche daten und was der unterschied beider ist, um dann schliesslich auf eine lösung zu kommen die aber nicht meine frage beantwortet.
trotzdem danke ....
 
Hat die Sortierung wenigstens eine nachvollziehbare Logik? Also irgendwas aufsteigend, absteigend etc?

Wesshalb ist die Sortierung so wichtig? Was passiert nacher mit den Daten? Wenn z.B. durch eine falsche Sortierung die automatische Weiterverarbeitung scheitert, würde ich mir nochmals ein paar Gedanken zur Lösung an sich machen..
 
Wir können dir nicht helfen, mit diesen Angaben die du machst. Wenn alles richtig im txt file sortiert ist, warum verwendest du denn nicht das txt File?
 
Wenn die Daten nicht zu umfangreich sind und das Updateintervall 24h beträgt würde ich auch in Erwägung ziehen die Tabelle einfach zu leeren und wieder anhand des Textfiles zu füllen. Dann ist das Problem gelöst.
 
Ein Perl Skript wird das einfachste sein. Mit Perl kann man easy die Textdatei parsen und danach die Mysql Daten entsprechend ausgeben. Knappe Antwort ich weiss, war aber auch ne extrem knappe Frage. Sprich unzureichende Problemstellung.
Verstehe nicht wieso das so schwierig ist sich eben ein paar Fake-Daten zur Veranschaulichung auszudenken.
wacko.gif
 
Dieser Thread gefällt mir nicht
ph34r.gif


Aussagen wie:
QUOTE Hab mir schon gedacht das so eine Antwort kommt, aber ich denke man kann lesen was ich mein und wenn es dafür keine Lösung gibt bzw. man dafür keine Lösung weiss, ist es ok.
Will da jemand irgend etwas beweisen?


QUOTE Klar könnte ich erklären welche daten und was der unterschied beider ist, um dann schliesslich auf eine lösung zu kommen die aber nicht meine frage beantwortet.

Meine 3 Semester Kryptologie nützen nichts, um diese Message zu entziffern und meine Kristallkugel hate plötzlich die Eigenschaften von Milchglas.

Ich finde es schade, dass schon mehrere helle Köpfe dieses Forums vergebens um mehr Information bitten mussten. Ich habe eine ungeheuere Lust, diesen Thread zu löschen.

Last chance for "oursql", OK?
wink.gif


Cheers, René
 
Alternativ kannst Du eine Schlüsseltabelle anlegen, die täglich geupdatet wird und dann mittels join select sortieren.

Was der Threadersteller nicht versteht ist das die Form der Daten essentielle Bedingungen an die Lösungen stellen. Also wäre es entgegen seinen Behauptungen sehr gescheit ein Beispiel-Datensatz zu posten.
 
...

1 MYSQL - DATENBANK
10 Tabellen
Jede Tabelle spiegelt ein Projekt wieder ,an den jeweils 300 Leute mitarbeiten

Jede Tabelle enthält die gleichen Namen, aber unterschiedliche Anzahl an Stunden :

Tabelle1 - Projekt1
Name / Arbeitsaufwand
-----------------------------
Thomas / 10 std.
-----------------------------
Florian / 5 std.
-----------------------------
Jan / 3std.


Tabelle2 - Projekt2
Name / Arbeitsaufwand
-----------------------------
Thomas / 5std.
-----------------------------
Florian / 2,5std.
-----------------------------
Jan / 10std.
.
.
usw.


jetzt sendet mir mein chef, täglich eine Liste (.txt Datei) mit dem Projektnamen und den Namen zu, an deren Reihenfolge ich mich strikt halten soll: sprich heute Florian, Jan, Thomas ... morgen will er Jan, Thomas, Florian usw.
dabei soll ich ihm natürlich mitteilen wieviel Stunden diese jeweils an einem Projekt gearbeitet haben.Bitte fragt mich nicht nachdem Grund ,warum er die Reihenfolge ständig verändert, er ist wahrscheinlich ein GedankenloserChef.
Wie gesagt das Problem ist daran ,jedenfalls für mich, die Reihenfolge einzuhalten...

Hoffe das hilft ein bisschen

Gruss
 
Irgendwie verstehe ich das Problem bis jetzt nicht - und die Antworten legen nahe, daß das den meisten hier so geht.

@oursql: Wenn Ihr Daten aus einer mySql auslesen könnt, dann könnt Ihr auch Zeilen einlesen - ob mit PHP, Perl oder Asp (meinetwegen auch mit VBScript oder einem kleinen NET), ist völlig egal.

Und wenn die Datei einfach zeilenweise eingelesen wird und der Primärschlüssel automatisch hochzählt, genügt eine Sortierung nach dem Primärschlüssel, um das Problem zu erledigen.

Das Problem ist also so einfach, daß wahrscheinlich deshalb niemand versteht, was dir eigentlich unklar ist.
 
Du machst 2 Tabellen.

In einer hast du die Arbeitsstunden.

Die andere ist nur da um das txt zu importieren. Dann lässt du alle Daten aus der txt Tabelle auslesen und gibst diese per while schlaufe aus. in der schlaufe fragst du zu jedem Eitrag die Stunden ab.

SELECT * FROM stunden WHERE name = 'Florian'

verstanden?
 
ich gebe dir vollkommen recht, mir ist da irgendetwas nicht klar, deshalb frage ich ja auch mit dem Hinweis das ich nicht viel Ahnung von Mysql habe.

Wenn ich aber diese Zeilen einlese, wie du sagst, stehen doch dann nur die Namen in der Tabelle , wie komme ich denn dann an die Stunden...
unsure.gif


sorry auch wenn es für euch kein niveau hat, aber ich versteh einfach nicht wie

EDIT:
@B , nein noch nicht richtig verstanden , aber ich werde es mir mal anschauen...Danke
 
QUOTE (oursql @ Di 24.10.2006, 16:20)Wenn ich aber diese Zeilen einlese, wie du sagst, stehen doch dann nur die Namen in der Tabelle , wie komme ich denn dann an die Stunden...

Wenn Du so etwas


CODE Thomas / 10 std.


einliest (in eine neue Tabelle mit zwei Spalten - Primärschlüssel und großes Textfeld 'Inhalt'), dann machst Du eine neue Tabelle mit vier Spalten:

ID | Name | sStunden | iStunden

Name/sStunden sind Text/nvarchar, iStunden sind Decimal(18,2) (ich verwende kein mySql, aber etwas analoges wird es da geben).

Und dann wird per Select rüberkopiert und zerlegt (Code für den MS-SqlServer):


CODE Select Left(A.Inhalt, CharIndex('/', A.Inhalt) - 1), Substring(A.Inhalt, CharIndex('/', A.Inhalt) + 1)
From Ausgangstabelle As A Order By A.Primärschlüsselspalte


Anschließend Update - das Kürzel std. entfernen und als Konvertierung in die neue Spalte rüberkopieren:


CODE Update Zieltabelle
Set iStunden = Cast(Replace(sStunden, 'std.', '') as int)


Zerlegen, Löschen und Konvertieren kann man natürlich auch in einem Schritt erledigen.
 
Hallo

Falls du es lieber über SQL lösst könntest du eine Tabelle namens z.B. sortOrderOfDay anlegen. Diese hat eine Spalte ordernumber und eine mit dem Namen der Arbeitskraft.

Deine bestehenden Abfrage ergänzt du um einen Join auf die sortOrderOfDay Tabelle und sortierst das Resultat nach der Spalte ordernumber.

Aber ich würde auch noch dazu raten das Datenmodell in Ordnung zu bringen.

In etwa so:
CODE
create table person{
id bigint autoincrement,
name varchar
}
create table projekt {
id bigint autoincrement,
name varchar
}
create table aufwand {
id bigint autoincrement,
person_id bigint,
projekt_id bigint,
datum date,
zeit int
}


Mit der Aufteilung in eine Tabelle pro Projekt usw. machst du dir keinen Gefallen, auch wenn der Start evtl. etwas leichter fehlt.

Gruss

Thomas
 
WOW ich danke für eure Antworten, ich muss mir die Lösungsvorschläge mal in Ruhe anschauen , da ich mich da erst etwas einarbeiten muss...Trotzdem vielen Dank !!
Grüsse aus Berlin
 
Kurzer Kommentar: Siehst du, "oursql", Ayom funktioniert und hilft gerne. Auf klare Fragen folgen klare Antworten. Ich bin sicher, dass du deine ideale Lösung in weniger als 24 Stunden finden wirst. Überigens sorry für mein "Last chance", ich sehe, dass du verstanden hast.
Cheers, René
 
Zurück
Oben