Ankündigung

Einklappen
Keine Ankündigung bisher.

case regel in subquery

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • case regel in subquery

    hallo liebe leute,

    ich habe eine Idee und weiß nicht ob sie sich umsetzen lässt.
    ich habe ein Query und würde das gerne in einem bestimmten Fall begrenzen. Ich habe aber keine Idee wie ich das umsetzen kann.
    Das ist die Grundabfrage.
    PHP-Code:
    SELECT `contests`.`id`,
    `
    contests`.`comp_name`,
    `
    events`.`event_name`,
    `
    contests`.`comp_date`,
    `
    racetype`.`short_type`
    FROM  `contests`
    JOIN  `events`  ON `events`.`id`  = `contests`.`event_id`
    JOIN  `racetypeON `racetype`.`id`  = `contests`.`racetype`
    WHERE   `contests`.`classes`      LIKE '%xx%'
    AND   `contests`.`comp_date`      > 'mmmmmmm'
    AND   `events`.`status_of_event`    = 2
    AND   `events`.`registration_tool`  = 1
    AND   `events`.`registration_link`  = ''
    AND   `contests`.`racetypeNOT LIKE 6
    AND   `contests`.`racetypeNOT LIKE 7 
    Meine gedachte Erweiterung ist aber falsch. Kann mir jemand erklären wie man soetwas in eine WHERE Clause einbaut?
    PHP-Code:
    //die AND sollte nur laufen wenn der Case erfüllt ist
    CASE WHEN `events`.`racetype` = 11
      THEN  
    AND `contests`.`comp_number`= 

  • #2
    Zitat von Cyclestores Beitrag anzeigen
    hallo liebe leute,

    ich habe eine Idee und weiß nicht ob sie sich umsetzen lässt.
    ich habe ein Query und würde das gerne in einem bestimmten Fall begrenzen. Ich habe aber keine Idee wie ich das umsetzen kann.
    Das ist die Grundabfrage.
    PHP-Code:
    $sql ="SELECT `contests`.`id`,
    `contests`.`comp_name`,
    `events`.`event_name`,
    `contests`.`comp_date`,
    `racetype`.`short_type`
    FROM `contests`
    JOIN `events` ON `events`.`id` = `contests`.`event_id`
    JOIN `racetype` ON `racetype`.`id` = `contests`.`racetype`
    WHERE `contests`.`classes` LIKE '%
    {$ak}%'
    AND `contests`.`comp_date` > '
    {$today}'
    AND `events`.`status_of_event` = 2
    AND `events`.`registration_tool` = 1
    AND `events`.`registration_link` = ''
    AND `contests`.`racetype` NOT LIKE 6
    AND `contests`.`racetype` NOT LIKE 7
    "

    Meine gedachte Erweiterung ist aber falsch. Kann mir jemand erklären wie man soetwas in eine WHERE Clause einbaut?
    PHP-Code:
    //die AND sollte nur laufen wenn der Case erfüllt ist
    CASE WHEN `events`.`racetype` = 11
    THEN 
    AND `contests`.`comp_number`= 
    Eine CASE oder WHEN-Abfrage hat im WHERE-Clause nichts zu suchen. Die kommt, wenn überhaupt, direkt in die Aufzählung der aufzulistenden Spalten.
    Mach bitte folgendes:
    DB-Dump posten. Dann für die dort gegebenen Daten zeigen, welche Ausgabe du beim ausführen der Abfrage erwartest.

    Kommentar


    • #3
      Zitat von Alf2016 Beitrag anzeigen

      Eine CASE oder WHEN-Abfrage hat im WHERE-Clause nichts zu suchen. Die kommt, wenn überhaupt, direkt in die Aufzählung der aufzulistenden Spalten.
      Mach bitte folgendes:
      DB-Dump posten. Dann für die dort gegebenen Daten zeigen, welche Ausgabe du beim ausführen der Abfrage erwartest.
      vielen Dank, so etwas habe ich micr schon gedacht. Ich habe es in der php Ausgabe drin. ES hätte nur Sinn gemacht whenn ich in der WHERE Clause hätte eine if() einbauen können.

      Kommentar


      • #4
        Mal abgesehen davon, dass man CASE WHEN sehr wohl auch im WHERE verwenden kann, kannst du das aber mit einem OR (`events`.`racetype` = 11 AND `contests`.`comp_number`= 0 ) umsetzen.
        sorry, shift-taste kaputt

        Kommentar


        • #5
          Zitat von Meister1900 Beitrag anzeigen
          Mal abgesehen davon, dass man CASE WHEN sehr wohl auch im WHERE verwenden kann, kannst du das aber mit einem OR (`events`.`racetype` = 11 AND `contests`.`comp_number`= 0 ) umsetzen.
          Ebend.

          Kommentar

          Lädt...
          X