Ankündigung

Einklappen
Keine Ankündigung bisher.

[GELÖST] UNION ALL Abfrage mit count bringt unerwartet falsche Werte.

Einklappen

Neue Werbung 2019

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

  • [GELÖST] UNION ALL Abfrage mit count bringt unerwartet falsche Werte.

    Moin,

    ich möchte mein Script erweitern. ALT und funktional:

    PHP-Code:
    SELECT `funktion_id`,count(`funktion_id`) AS menge FROM `seiteninhalteGROUP BY `funktion_id
    Code:
     
    funktion_id menge
    1 4
    2 6
    3 1
    10 2
    Nun möchte ich diese Abfrage über eine 2te Tabelle erweitern. Also dachte ich mir mit UNION ALL wird das ne schnelle Lösung.. aber weit gefehlt.
    Minimal bekomme ich genau die korrekten Daten. funktions_id 12 ist nun dabei. Die kommt aus der neuen Tabelle

    PHP-Code:
    SELECT `funktion_idFROM seiteninhalte
    UNION ALL
    SELECT 
    `funktion_idFROM seiteninhalte_veranstaltung
    ORDER BY 
    `funktion_id
    Code:
     
    funktion_id
    1
    1
    1
    1
    2
    2
    2
    2
    2
    2
    3
    10
    10
    12
    Nun dachte ich mir, dass das count der ganzen Geschichte nun kein Problem mehr sein sollte. Aber ab hier kommen mir nicht nachvollziehbare Werte raus
    PHP-Code:
    SELECT `funktion_id`, count(`funktion_id`) AS menge FROM seiteninhalte
    UNION ALL
    SELECT 
    `funktion_id`, count(`funktion_id`) AS menge FROM seiteninhalte_veranstaltung
    ORDER BY 
    `funktion_id
    Code:
     
    funktion_id menge
    3 13
    12 1

    Weiß einer Rat warum sich SQL hier so verhält ?

  • #2
    Sorry,

    nachdem ich nochmal Rechtschriebkontrolle gemacht habe, hab ich den Fehler gefunden:
    Das Gruppieren ermöglicht mir die gewünschte Ausgabe.
    Danke fürs zuhören

    PHP-Code:
    SELECT `funktion_id`, count(`funktion_id`) AS menge FROM seiteninhalte GROUP BY `funktion_id`
    UNION ALL
    SELECT 
    `funktion_id`, count(`funktion_id`) AS menge FROM seiteninhalte_veranstaltung GROUP BY `funktion_id`
    ORDER BY `funktion_id

    Kommentar


    • #3
      Du kannst mySQL so konfigurieren, dass es keine unplausiblen (sprich falsche) Werte liefert, sondern einen Fehler ausgibt und diese gefährliche Situation immer auffällt.
      Denn wie würde einem bei Millionen von Daten noch die Plausibilität ersichtlich sein?

      Du kannst auch irgendein anderes Datenbanksystem nehmen, alle machen es besser.

      Kommentar


      • #4
        Zitat von daniel_1998 Beitrag anzeigen


        Weiß einer Rat warum sich SQL hier so verhält ?

        Ja. Es erkennt nicht den von Dir gemachten Fehler. Jedes andere DB-System macht es besser und liefert einen Fehler, MySQL ein falsches Ergebniss.
        PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

        Kommentar

        Lädt...
        X