Mysql, SET@, IF, SELECT

  • Frage: habe eine Tabelle

    Code
    dl_anfrage

    mit folgenden Spalten

    Code
    ID INT autoincrement
    subid INT
    DL1 VARCHAR(20)
    DL2 VARCHAR(20)
    DL3 VARCHAR(20)
    DL4 VARCHAR(20)
    ..
    DLX VARCHAR(20)
    d_erfass DATE

    Setze mit Trigger after_submit die Variable subid

    Code
    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
    SET @DLdetail = 'eins' IF (select count(*)from dl_anfrage where subid = @subid and DL1 != '') > '0';
    
    
    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
    set@subid = (select max(subid) from dl_anfrage);

    Überprüfung

    Code
    select @subid 
    Ergebnis :15897

    Jetzt mit Case

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


    Überprüfung

    Code
    select @Dienstl
    Ergebnis DL1
    • Offizieller Beitrag

    Kommst Du nicht aber damit auch zum Ziel?

    Warum muss es über Variablen sein?

  • 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

    • Offizieller Beitrag

    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
    INSERT INTO dl_anfrage 
    (`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`)
    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.