Mike: WENN DANN in einer SELECT abfrage, geht das?

Ich möchte in meiner Tabelle einen Namen suchen, falls dieser nicht vorhanen ist soll der Namen $name = 'frei' ausgegeben, der auch in er tabelle vorhanden ist.

$sql =  "select  * from table WHERE name='$name'";

aber ich würde das ganze gerne über eine einzige SELECT Abfrage bewerkstelligen, nur wie sage ich dieser wenn dann...

Mike

  1. Ich habe vergessen zu schreiben, das es sich um MYSQL handelt, sorry...

    1. Ich habe vergessen zu schreiben, das es sich um MYSQL handelt, sorry...

      Auch in MySQL kein Problem ;)
      https://dev.mysql.com/doc/refman/5.1/de/control-flow-functions.html

  2. Hallo

    du meinst vermutlich eine Abfrage mit Case?
    Etwas in der Art?

      
    SELECT  
        CASE  
            WHEN meineSpalte = 'Administrator' THEN 'gefunden'  
            ELSE 'nicht gefunden'  
          END  
        AS namen  
      
    FROM  
      usertable  
    
    

    Gruss
    Werner

    1. SELECT
          CASE
              WHEN meineSpalte = 'Administrator' THEN 'gefunden'
              ELSE 'nicht gefunden'
            END
          AS namen

      FROM
        usertable

        
      Aber wenn ich das richtig verstehe, habe ich dann ja die Ausgabe gefunden bzw. nicht gefunden, ich möchte aber das entweder der Datensatz von gefunden ausgegeben wird bzw. der Datensatz von nicht gefunden(der in diesem Fall auch vorhanden ist).  
        
      Oder verstehe ich das nicht?  
        
        
      
      
      1. Hallo,

        ich glaube in deinem Fall wäre es einfacher/angebrachter, nach dem Prinzip:

        Wenn-die-Anzahl-der-Zeilen-deiner-SQL-Abfrage == 0 {
           -> mach was
        } wenn nicht {
           -> mach was anderes
        }

        zu verfahren.

        Viele Grüße
        Siri

      2. Hallo

        SELECT
            CASE
                WHEN meineSpalte = 'Administrator' THEN meineSpalte
                ELSE 'nicht gefunden'
              END
            AS namen
        FROM
          usertable

        
        >   
        > Aber wenn ich das richtig verstehe, habe ich dann ja die Ausgabe gefunden bzw. nicht gefunden, ich möchte aber das entweder der Datensatz von gefunden ausgegeben wird bzw. der Datensatz von nicht gefunden(der in diesem Fall auch vorhanden ist).  
          
        Dann setze einfach den Feldinhalt statt des „gefunden“ hinter `THEN`{:.language-sql}.  
          
        Tschö, Auge  
        
        -- 
        Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.  
        Terry Pratchett, "Wachen! Wachen!"  
          
        ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}  
          
        [Veranstaltungsdatenbank Vdb 0.3](http://termindbase.auge8472.de/)
        
  3. Hi,

    Ich möchte in meiner Tabelle einen Namen suchen, falls dieser nicht vorhanen ist soll der Namen $name = 'frei' ausgegeben, der auch in er tabelle vorhanden ist.

    Gibt es jeweils nur (maximal) genau einen Datensatz pro Name, oder können das mehrere sein?

    $sql =  "select  * from table WHERE name='$name'";

    aber ich würde das ganze gerne über eine einzige SELECT Abfrage bewerkstelligen, nur wie sage ich dieser wenn dann...

    Die IF-Kontrollstruktur von MySQL arbeitet auf Spalteninhalten – du möchtest hier aber etwas, das auf Datensatz-Ebene arbeitet.

    Wenn es nur jeweils einen Datensatz geben kann – dann selektiere Datensätze mit dem gesuchten Namen *oder* 'frei', ordne sie danach ob der gesuchte Name gefunden wurde oder nicht – und schränke mit LIMIT auf den ersten Datensatz in dieser Menge ein.

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    1. Hi,

      Wenn es nur jeweils einen Datensatz geben kann

      Wenn nicht – dann kannst du das auch mit UNION machen.

      Erste Query selektiert Datensätze mit dem gesuchten Namen, und wird per UNION mit einer zweiten Query verbunden, die Datensätze mit name='frei' heraussucht für den Fall das eine Subquery für den gesuchten Namen 0 Datensätze liefert.

      MfG ChrisB

      --
      RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
  4. Hello,

    Ich möchte in meiner Tabelle einen Namen suchen, falls dieser nicht vorhanen ist soll der Namen $name = 'frei' ausgegeben, der auch in er tabelle vorhanden ist.

    $sql =  "select  * from table WHERE name='$name'";

    Das Escaping hast Du sicherlich nicht vergessen, sondern hier nur weggelassen?

    Was hältst Du von der Alternative, den Namen einfach einzutragen in die die Tabelle, und sollte er schon dagewesen sein, den Eintrag abzulehnen? Das wäre ein übliches und multirequestfestes Vergehen f+r Datenbankanwendungen.

    siehe UNIQUE als CONSTRAINT für die jeweilige SPALTE der TABELLE.

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bikers-lodge.com