Mysql, SET@, IF, SELECT

  • Frage: habe eine Tabelle

    Code
    1. dl_anfrage

    mit folgenden Spalten


    Code
    1. ID INT autoincrement
    2. subid INT
    3. DL1 VARCHAR(20)
    4. DL2 VARCHAR(20)
    5. DL3 VARCHAR(20)
    6. DL4 VARCHAR(20)
    7. ..
    8. DLX VARCHAR(20)
    9. d_erfass DATE


    Setze mit Trigger after_submit die Variable subid


    Code
    1. set @subid = (select max(subid) from dl_anfrage); funktioniert select @subid; ERGEBNIS 17788


    Die Felder DL 1 -4 haben nur 1 Wert, also DL1 = 'DL1' , DL2 = '', DL3 = '', DL4 = '', DLx = ''
    oder
    Die Felder DL 1 -4 haben nur 1 Wert, also DL1 = '' , DL2 = 'DL2', DL3 = '', DL4 = '', DLx = ''
    oder
    Die Felder DL 1 -4 haben nur 1 Wert, also DL1 = '' , DL2 = '', DL3 = '', DL4 = 'DL4', DLx = ''


    usw.


    Die Zielstellung war eine Variable zu setzen in Abhängigkeit der Inhalte



    nächster Versuch:


    Code
    1. SET @DLdetail = 'eins' IF (select count(*)from dl_anfrage where subid = @subid and DL1 != '') > '0';
    2. SET @DLDetail = 'zwei' IF (select count(*)from dl_anfrage where subid = @subid and DL2 != '') > '0';


    was soll ich sagen ERROR,


    Hat ein Wissender eine Lösung?

  • Entschuldigung war 3 Tage außer Haus


    - - - Aktualisiert - - -


  • Lösung gefunden, danke für den Case Hinweis, und etwas Ordnung in Abfrage gebracht.


    Code
    1. set@subid = (select max(subid) from dl_anfrage);


    Überprüfung

    Code
    1. select @subid
    2. Ergebnis :15897


    Jetzt mit Case

    Code
    1. set @Dienstl = (select
    2. (case
    3. when (select count(*) from dl_anfrage where DL1 != '' and subid = @subid)>0 then "DL1"
    4. when (select count(*) from dl_anfrage where DL2 != '' and subid = @subid)>0 then "DL2"
    5. else "DL3"
    6. end));


    Überprüfung

    Code
    1. select @Dienstl
    2. Ergebnis DL1
  • weil mir nix besseres eingefallen ist, nein spaß beiseite.


    Die Webformulare arbeiten zwar mit mysql- datenbanken, es ist jedoch völlig sekundär ob die Inhalte einer gewissen ordnung entsprechen, also wird nach dem "formular-Insert" ein script angestoßen der für den letzten Eintrag die Werte auseinander nimmt und ordentlich in tabellen einträgt. Und da fiel mir wirklich nix besseres ein.


    Holger

  • Und wenn Du #5 in eine View schmeißt, hilft Dir das nicht?
    Ist nur ne Frage, weil ich da noch nicht hinterblicke, was genau Du am Ende vorhast ;-)


    Was ich verstanden habe ist, dass Du zumindest den Dienstleister für den letzten Eintrag haben willst.
    Dafür wäre übrigens Dein Datenbank-Design auch nicht gut gelöst, wenn ich das sagen darf.


    Gruß Arne

  • Jeder bemerkt, dass mein Datenbank Design nicht gut gelöst ist... :-), ist aber nicht meins, ich bekomme die Daten {1}, {2}, , {99} aus dem Formular der Webseite (nix Kundenanmeldung oder so). Geht in Tabelle dl_anfrage; Die Daten sind so wie im Formular ausgewiesen, also Value : DL1 und nicht wie ich das gern hätte 1 (nur als Bsp.).
    Um nun die Ergebnisse der dl_anfrage aufzuarbeiten und auf eine anderen Seite anzuzeigen muss ich einen script starten, der aus dem Wert wieder Beipiel {3} 'DL1-3' eine '1' oder '2' oder '3' macht und das Ergebnis '1' + {subid} '15897' in in die Tabelle XY einträgt. Der Wert {27} und {48} gehören mit der subid in die Tabelle AA, usw. usf. Wenn alles verteilt ist, geht sehr schnell (0,005) kann ich dann dann ein select auf die vorhanden Views (z.B. v_dl_region) machen.


    Es gibt zusätzlich noch 7 Spalten in der Tabelle dl_anfrage die entweder '' oder != '' , aber auch 'DDL1; DDL2;DDL3;DDL4' als Inhalt haben können da hilft mir die Variable @Dienstl weiter in der Zuordnung. Geht bestimmt auch ohne Variable aber so muss ich mir keine Gedanken machen ob oder ob nicht.


    Vor 100 Jahren wurden die Formulare noch selbst in PHP geschrieben ... da lief das wie geschnitten Brot, heute denkt jeder Wordpress + Formmaker + schlag mich tot - ist der Weißheit letzter Schluß.


    Trotzdem Danke für den netten Austausch


    Versteht am Schreibtsich immer keiner :razz:

  • nur mal ein Auszug aus dem "Formulardatengerüst"


    SQL
    1. INSERT INTO dl_anfrage
    2. (`subid`, `Id...`, `s_...`, `DL1`, `DL2`, `DL3`, `DL4`, `zustand...`, `pen...`, `beschreibung...`, `bilder...`, `userIP....`, `detailsjanein`, `kz...`, `FINE..`, `Herstgrund...`, `HerstAuf...`, `Vers...`, `...art`, `usw.`, `gemeldet...`, `nnummer..`, `DATENSCHUTZ`, `PLZ....`, `region`, `telerueckfragen`, `emailrueckfragen`, `29`, `30`, `verification`, `Name`, `d_erfass`)
    3. VALUES ("{subid}", "{id...}", "{18}", "{13}", "{14}", "{15}", "{16}", "{23}", "{24}", "{39}", "{28}", "{ip}", "{35}", "{29}", "{32}", "{33}", "{34}", "{30}", "{38}", "{37}", "{31}", "{36}", "{25}", "{20}", "{19}", "{21}", "{41}", "{40}", "{useremail}", "Gast", "{40}", now())


    Ja Leben schwer ist richtig.