Ankündigung

Einklappen
Keine Ankündigung bisher.

mySQL - Abfrage - HILFE

Einklappen

Neue Werbung 2019

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

  • Scriptsuche mySQL - Abfrage - HILFE

    Hallo PHP-Freunde,


    Ich habe noch so ein Spezialfall an dem ich grade verzweife, vielleicht könnte mir hier auch jemand helfen.
    Ich habe noch keine vernünftigen mySQL-Code hinbekommen, deshalb habe ich es erst einmal mit Worten ausformuliert,
    Was ich mir wünsche:


    Bedingung 1:
    Wenn die 'ideen-Nr' nur einmal vorkommt in der Datenbank,
    und im Feld 'gutachten_start' und Feld 'gutachten_ende' ist jeweils ein Datum hinterlegt
    und "ideen_status = 'Begutachtung'" vorliegen,
    dann gib die 'ideen-Nr', 'gutachten_status', 'gutachten_start' und 'gutachten_ende' aus.



    Bedingung 2:
    Wenn die 'ideen-Nr' mehrmals vorkommt in der Datenbank,
    prüfen ob alle der Felder mit der gleichen 'ideen-Nr' aufweist,
    Feld 'gutachten_start' und Feld 'gutachten_ende' jeweis ein Datum hinterlegt wurde
    wenn Ja, dann nur diesen Datenzatz anzeigen mit dem höchsten Wert im Feld 'gutachten_ende'.
    Wenn Feld 'gutachten_start' ist Datum hinterlegt und Feld 'gutachten_ende' ist (Null),
    dann alle Datensatze mit der gleichen Ideen-Nr. nicht anzeigen.

    Ausgabefelder: 'ideen-Nr', 'gutachten_status', 'gutachten_start' und 'gutachten_ende'.


    Hinweis: Alle Daten befinden sich in einer Datenbank-Tabelle

    Ich hoffe Du kannst damit was anfangen

    Wäre Super wenn Du mir helfen könntest

    Gruß

    Platoon71

  • #2
    Moin,

    brauchst du beides in einem Statement oder sollen es zwei SQLs werden?

    Für Bedingung 1 hätte ich da was:

    Code:
    SELECT `ideen-Nr`, `gutachten_start`, `gutachten_ende`, `ideen_status` FROM table
    WHERE NOT EXISTS (SELECT `ideen-Nr`, COUNT(*) FROM table WHERE `ideen-Nr` = 3 GROUP BY `ideen-Nr` HAVING COUNT(*) > 1)
    AND `ideen-Nr` = 3
    AND `gutachten_start` IS NOT NULL
    AND `gutachten_ende` IS NOT NULL
    AND `ideen_status` = 'Begutachtung'
    Einfach table durch den Tabellennamen ersetzen und ideen-Nr durch die gewünschte Nummer. Darf ich fragen warum das alles in ein SQL Statement muss? Gerade Bedingung zwei wäre in einem PHP Skript sehr einfach umzusetzen. Da ich leider kein SQL Profi bin kann ich da auf die Schnelle nicht weiterhelfen.

    Kommentar


    • #3
      Für die Bedingung 2 hätte ich den Vorschlag. Getestet hab ich den auf jeden Fall jedoch nicht.

      Code:
      SELECT * FROM tabelle WHERE 
      ideen-Nr IN (SELECT max(gutachten_ende) FROM tabelle WHERE gutachten_start IS NOT NULL AND gutachten_ende IS NOT NULL) 
      OR
      (
          ideen-nr IN (SELECT * FROM tabelle WHERE gutachten_start IS NOT NULL AND gutachten_ende IS NULL) 
          AND (SELECT count(gutachten_ende) FROM tabelle WHERE gutachten_start IS NOT NULL AND gutachten_ende IS NOT NULL) = 0
      )

      Kommentar

      Lädt...
      X