Ergebnis 1 bis 10 von 10

Thema: Mysql, SET@, IF, SELECT

  1. #1
    HTML Newbie
    Registriert seit
    18.01.2019
    Beiträge
    7
    Danke
    1
    Bekam 0 mal "Danke" in 0 Postings

    Standard 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

    Code:
    set @DLDetail = '';
    SET @DLDetail = 'eins' where (select count(*)from dl_anfrage where subid = @subid and DL1 != '') >'0';
    
    SET @DLdetail = 'zwei' where (select count(*)from dl_anfrage where subid = @subid and DL2 != '') > '0';
    
    SET @DLDetail = 'drei' where (select count(*)from dl_anfrage where subid = @subid and DL3 != '') > '0';
    
    usw.
    
    select @DLDetail ERROR
    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?

  2. #2
    Moderator Avatar von Arne Drews
    Registriert seit
    20.01.2016
    Ort
    Friedrichstadt, NF
    Beiträge
    1.796
    Danke
    24
    Bekam 140 mal "Danke" in 139 Postings

    Standard AW: Mysql, SET@, IF, SELECT

    1. Wäre bei Auftreten eines Fehlers der Fehlertext nicht ganz unwichtig!
    2. Warum vergleichst Du einen INTEGER in SingleQuotes?
    3. Hast Du schon gewöhnliche UPDATE-Queries probiert, die kann man bspw. schön mit CASE kombinieren

  3. Folgende User finden die Antwort von Arne Drews gut:


  4. #3
    HTML Newbie
    Themenstarter

    Registriert seit
    18.01.2019
    Beiträge
    7
    Danke
    1
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Mysql, SET@, IF, SELECT

    Entschuldigung war 3 Tage außer Haus

    - - - Aktualisiert - - -

    Code:
    DELIMITER $$
    
    USE `repair`$$
    DROP TRIGGER IF EXISTS `web_repair`.`ag_rep_AFTER_INSERT` $$
    DELIMITER ;
    DROP TRIGGER IF EXISTS `web_repair`.`rep_AFTER_INSERT_SYNTAX_ERROR`;
    
    DELIMITER $$
    USE `repair`$$
    CREATE DEFINER=`%`@`%` TRIGGER `repair`.`rep_AFTER_INSERT` AFTER INSERT ON `dl_anfrage` FOR EACH ROW
    BEGIN
    SET @subid = (select (max)subid from dl_anfrage);
    SET @DLDetail = 'eins' where (select count(*)from dl_anfrage where subid = @subid and DL1 != '') >'0';
    SET @DLDetail = 'zwei' where (select count(*)from dl_anfrage where subid = @subid and DL2 != '') >'0';
    SET @DLDetail = 'drei' where (select count(*)from dl_anfrage where subid = @subid and DL3 != '') >'0';
    END$$
    DELIMITER ;
    
    
    Operation failed: There was an error while applying the SQL script to the database.
    ERROR  1064: You have an error in your SQL syntax; check the manual that  corresponds to your MySQL server version for the right syntax to use  near 'where (select count(*)from dl_anfrage where subid = @subid an' at  line 4
    SQL Statement:
    CREATE DEFINER=`caravan`@`%` TRIGGER `web_repair`.`rep_AFTER_INSERT` AFTER INSERT ON `dl_anfrage` FOR EACH ROW
    BEGIN
    SET @subid = (select (max)subid from dl_anfrage);
    SET @DLDetail = 'eins' where (select count(*)from dl_anfrage where subid = @subid and DL1 != '') >'0';
    SET @DLDetail = 'zwei' where (select count(*)from dl_anfrage where subid = @subid and DL2 != '') >'0';
    SET @DLDetail = 'drei' where (select count(*)from dl_anfrage where subid = @subid and DL3 != '') >'0';
    END

  5. #4
    HTML Newbie
    Themenstarter

    Registriert seit
    18.01.2019
    Beiträge
    7
    Danke
    1
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Mysql, SET@, IF, SELECT

    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

  6. #5
    Moderator Avatar von Arne Drews
    Registriert seit
    20.01.2016
    Ort
    Friedrichstadt, NF
    Beiträge
    1.796
    Danke
    24
    Bekam 140 mal "Danke" in 139 Postings

    Standard AW: Mysql, SET@, IF, SELECT

    Kommst Du nicht aber damit auch zum Ziel?
    Code:
    select
        (case
            when DL1 not like '' then 'DL1'
            when DL2 not like '' then 'DL2'
            else 'DL3'
        end) As Dienstl
    
    from
        dl_anfrage
    
    where
        subid = (select max(subid) from dl_anfrage)
    Warum muss es über Variablen sein?

  7. #6
    HTML Newbie
    Themenstarter

    Registriert seit
    18.01.2019
    Beiträge
    7
    Danke
    1
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Mysql, SET@, IF, SELECT

    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

  8. #7
    Moderator Avatar von Arne Drews
    Registriert seit
    20.01.2016
    Ort
    Friedrichstadt, NF
    Beiträge
    1.796
    Danke
    24
    Bekam 140 mal "Danke" in 139 Postings

    Standard AW: Mysql, SET@, IF, SELECT

    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

  9. #8
    HTML Newbie
    Themenstarter

    Registriert seit
    18.01.2019
    Beiträge
    7
    Danke
    1
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Mysql, SET@, IF, SELECT

    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

  10. #9
    Moderator Avatar von Arne Drews
    Registriert seit
    20.01.2016
    Ort
    Friedrichstadt, NF
    Beiträge
    1.796
    Danke
    24
    Bekam 140 mal "Danke" in 139 Postings

    Standard AW: Mysql, SET@, IF, SELECT

    Aber wenn die Daten über ein Formular kommen, hast Du doch alle Freiheiten, diese so zu verteilen, dass die wichtigen Prozesse am Ende einfacher werden.
    Ich will Dich nicht von irgendwas abbringen, denke aber weiterhin, dass Du Dir das Leben selber schwer machst

  11. #10
    HTML Newbie
    Themenstarter

    Registriert seit
    18.01.2019
    Beiträge
    7
    Danke
    1
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Mysql, SET@, IF, SELECT

    nur mal ein Auszug aus dem "Formulardatengerüst"

    Code:
    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.

Ähnliche Themen

  1. MySQL SELECT DISTINCT .... Vorfilterung?
    Von OJMD im Forum Datenbank Forum - MySQL und andere Datenbanksoftware
    Antworten: 24
    Letzter Beitrag: 28.08.2011, 10:25
  2. Select Abfrage mit PHP und MySQL
    Von Nightskill im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 4
    Letzter Beitrag: 16.01.2009, 13:27
  3. MySQL Where Sub-Select ?
    Von VivaLosTioz im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 2
    Letzter Beitrag: 05.12.2008, 18:17
  4. mysql select - kostet unendlich zet
    Von pbwuser im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 3
    Letzter Beitrag: 01.11.2007, 10:57
  5. MySQL Select Ausgabe Exportieren.
    Von Barret im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 0
    Letzter Beitrag: 25.01.2007, 16:03

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •