Definierte AS bezeichnungen im WHERE Teil

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

  • Definierte AS bezeichnungen im WHERE Teil

    Hi, habe keinen passenden Titel für mein Problem / Frage gefunden...

    Ist folgendes irgendwie möglich, wenn ja, wäre ich dankbar, wenn mir jmd sagt wie die Syntax lauten müsste damit das funktioniert:

    PHP-Code:
    SELECT einFeld as F1COUNT (einAnderesFeld) as F2
    WHERE F1 
    F2
    GROUP BY F1

    --> liefert einen mysql fehlermysql kann weder mit F1 noch F2 etwas im WHERE Abschnittanfangen 
    Habe in der Mysql doku gesucht, aber keine passende Antwort gefunden.

    Thx 4 Help

  • #2
    Das ist definitiv keine MySQL-Fehlermeldung.
    [FONT="Helvetica"]twitter.com/unset[/FONT]

    Shitstorm Podcast – Wöchentliches Auskotzen

    Kommentar


    • #3
      omg
      Unknown column lautet die Meldung aber das hilft mir nicht weiter mit der Frage ob's möglich ist eine Abfrage wie oben geschildert abzuschicken.

      Für eine Alternative wär ich auch dankbar

      Kommentar


      • #4
        Etwas deutlicher: Poste die komplette Fehlermeldung am besten inklusive Query. Andernfalls kann man nur raten!

        Evtl. könnte es aber auch daran liegen, dass du MySQL nicht sagst, welche Tabelle du eigentlich auslesen willst.
        [FONT="Helvetica"]twitter.com/unset[/FONT]

        Shitstorm Podcast – Wöchentliches Auskotzen

        Kommentar


        • #5
          PHP-Code:
          SELECT abt.id_abteilungCOUNT(abtpl.id_azubi) as AbtplAnzahl,
                    
          MaxAnzParallelerAzubis as Anzahl
          FROM abteilung 
          as abt
             LEFT JOIN abteilungsplan 
          as abtpl
               ON abtpl
          .id_abteilung abt.id_abteilung
            LEFT JOIN abteilungssbedarfe 
          as bedarf
              ON abt
          .id_abteilung bedarf.id_abteilung
          WHERE AbtplAnzahl 
          Anzahl 
          GROUP BY id_abteilung 
          Das ist meine Query
          und das: #1054 - Unknown column 'AbtplAnzahl' in 'where clause'
          die Meldung

          Gruß

          Kommentar


          • #6
            Gehen denn Alias Namen in der WHERE-Clause überhaupt
            Ich spreche die Spalten eigentlich dort immer über den Spaltennamen an
            PHP-Code:
            WHERE COUNT(abtpl.id_azubi) <  MaxAnzParallelerAzubis 
            schonmal so probiert?
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              Jepp ausprobiert schon, nur dann meckert Mysql wieder mit
              #1111 - Invalid use of group function


              sehe den Fehler nicht

              Kommentar


              • #8

                Kommentar


                • #9
                  Wie wär's damit?
                  PHP-Code:
                  GROUP BY abt.id_abteilung 
                  Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                  [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                  Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                  Kommentar


                  • #10
                    Hilft leider auch nichts Die Meldung bleibt bestehen

                    Kommentar


                    • #11
                      Auch wenn ich alles vereinfache:

                      PHP-Code:
                      SELECT *
                      FROM abteilungsplan 
                      WHERE COUNT 
                      (id_azubi) < 10
                      GROUP BY id_abteilung 
                      Bleibt die Meldung bestehen.

                      Soll ich daraus zurückschließen, dass COUNT nicht in der WHERE Klausel verwendet werden kann ?

                      Kommentar


                      • #12
                        Ok ich glaub ich weiß eine Lösung, ....


                        Statt Count im WHERE Teil mache ich im WHERE Teil nochmal ein SELECT:

                        SELECT einFeld as F1
                        FROM Tabelle
                        WHERE F1 < (SELECT COUNT (anotherFeld) ... )

                        dann müsste es ja klappen.
                        Ist diese Methode unelegant? oder spricht da eigentlich nichts dagegen

                        Kommentar


                        • #13
                          Original geschrieben von sypr0
                          Auch wenn ich alles vereinfache:

                          PHP-Code:
                          SELECT *
                          FROM abteilungsplan 
                          WHERE COUNT 
                          (id_azubi) < 10
                          GROUP BY id_abteilung 
                          Bleibt die Meldung bestehen.
                          Ist ja auch falsch. Zuerst kommt WHERE und dann GROUP BY respektive COUNT. Du kannst nicht in WHERE schon das Ergebnis von GROUP BY verwenden, bevor es überhaupt berechnet wurde.

                          Was du brauchst ist HAVING.

                          Code:
                          SELECT
                              `id_abteilung`, COUNT(`id_azubi`) AS `Anzahl`
                          FROM
                              `abteilungsplan`
                          GROUP BY
                              `id_abteilung`
                          HAVING
                              COUNT(`id_azubi`) < 10
                          Zuletzt geändert von h3ll; 12.08.2008, 17:22.

                          Kommentar


                          • #14
                            Original geschrieben von h3ll

                            Was du brauchst ist HAVING.

                            Code:
                            SELECT
                                `id_abteilung`, COUNT(`id_azubi`) AS `Anzahl`
                            FROM
                                `abteilungsplan`
                            GROUP BY
                                `id_abteilung`
                            HAVING
                                COUNT(`id_azubi`) < 10
                            Das ist richtig.
                            Aber die Abfrage von sypr0 wird auch so nicht funktionieren, weil bei einer Abfrage mit GROUP BY alle Attribute, die nicht Teil von Aggregatsfunktionen sind, auch in der GROUP BY-Klausel vorkommen müss(t)en. Bei Oracle oder MSSQL würde das auch eine entsprechende Fehlermeldung provozieren. MySQL ist hier (leider?) zu tolerant.
                            Ich denke, dieses Problem müsste mit einer Subquery gelöst werden. Da ich aber die Struktur nicht kenne, kann ich das auch nicht sicher sagen.
                            Gruss
                            H2O

                            Kommentar

                            Lädt...
                            X