Ankündigung

Einklappen
Keine Ankündigung bisher.

order by-Frage

Einklappen

Neue Werbung 2019

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

  • order by-Frage

    Moinz.
    Ich hab hier diesen wunderschönen Schnipsel vorgesetzt bekommen

    $where = "AND (meineTab.uid IN ( SELECT andere_uid FROM andereTab WHERE dritte_uid = '2' ))";

    und hab damit nix als Ärger. Aus der DB weiß ich, dass die Zahlen 1 und 3 zurück kommen. Jetzt soll aber die Reihenfolge umgekehrt werden und ich dachte, dass ich die beiden )) am Ende so auffüllen könnte

    )order by meineTab.uid DESC)

    ....klappt natürlich nicht. Nach gefühlen 2 Tagen Trial n Error stehe ich auf dem Schlauch. Hat jemand ne Idee?


  • #2
    Entweder sortierst du die gesamte Abfrage oder die Unterabfrage, aber bitte nicht mittendrin.
    http://hallophp.de

    Kommentar


    • #3
      Mir ist jede Lösung recht. Wie würde das denn bei der Unterabfrage aussehen? Die gesamte Abfrage kann ich so nicht erfassen...frag mich mal, was davor noch alles kommt.

      Kommentar


      • #4
        Na, so vermutlich:
        Code:
        $where = "AND (meineTab.uid IN ( SELECT andere_uid FROM andereTab WHERE dritte_uid = '2' )) ORDER BY meineTab.uid DESC";
        Wobei die Sortierung vom Zusammenhang her ($where) wohl nicht in diesen String gehört.

        Gruß
        http://hallophp.de

        Kommentar


        • #5
          Hi.

          Na ja, hat er ja schon gesagt: entweder sortierst Du die eigentliche Abfrage oder deine Sub-Abfrage (SELECT innerhalb der Klammer mit). Bißchen Eigeninitiative ist schon nicht schlecht, da die Lösung auch nicht hochkompliziert ist!

          Wolf29

          P.S. HAst ja Glück gehabt, dass Du gleich ne Lösung bekommen hast
          while (!asleep()) sheep++;

          Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

          Kommentar


          • #6
            Beide Vorschläge hab ich schon mal probiert. Aber sowohl

            Code:
            $where = "AND (meineTab.uid IN ( SELECT andere_uid FROM andereTab WHERE dritte_uid = '2' )) ORDER BY meineTab.uid DESC";
            als auch

            Code:
            $where = "AND (meineTab.uid IN ( SELECT andere_uid FROM andereTab WHERE dritte_uid = '2' ORDER BY andere.uid DESC)) ";
            führten zu "Kein Ergebnis". Ohne die order by kommt das normale Ergebnis zurück....entweder hab ich was in der Abfrage falsch oder da steckt noch viel mehr dahinter. Anstrengend...aber lehrreich.

            Kommentar


            • #7
              "Kein Ergebnis"
              Heißt was? Debugging:SQL - PHP.de Wiki
              http://hallophp.de

              Kommentar


              • #8
                Mit diesem Schnipsel alleine kannst du dann nichts ändern und können wir hier auch nur raten. Such mal heraus, wo dieses $where verwendet wird. Wenn es etwas in der Form ist:
                PHP-Code:
                $sql "SELECT ... WHERE " $where " ORDER BY "$order
                musst du zusehen, deine Sortierung dort in die ORDER BY Klausel einzufügen
                @fschmengler - @fschmengler - @schmengler
                PHP Blog - Magento Entwicklung - CSS Ribbon Generator

                Kommentar


                • #9
                  "Kein Ergebnis" steht hierfür, wenn die Abfrage ein leeres Ergebnis liefert. Ist der SQL-Befehl an sich falsch, gibt es ein "Falsche Eingabe"..so viel konnte ich diesem Konstrukt hier entnehmen.

                  Das mit der Suche nach dem gesamten Query hab ich mir schon fast gedacht...dratz...ich hatte gehofft, ein eingefügtes ORDER BY würde den Tag retten. Na ja, Annahmen sind bekanntlich die Mutter des Irrtums.

                  Aber soweit schon ma meinen Dank!
                  TZP

                  Kommentar


                  • #10
                    Wieso?

                    Wie sieht denn dein Code aus? Bislang haben wir nur einen Schnipsel zu sehen bekommen.
                    http://hallophp.de

                    Kommentar


                    • #11
                      Du könntest dir zum Test mal das komplette Select Statement ausgeben lassen und hier posten, dann kommt vielleicht ein bisschen Licht ins Dunkel.

                      Kommentar


                      • #12
                        Zitat von TZP Beitrag anzeigen
                        Beide Vorschläge hab ich schon mal probiert. Aber sowohl

                        Code:
                        $where = "AND (meineTab.uid IN ( SELECT andere_uid FROM andereTab WHERE dritte_uid = '2' )) ORDER BY meineTab.uid DESC";
                        als auch

                        Code:
                        $where = "AND (meineTab.uid IN ( SELECT andere_uid FROM andereTab WHERE dritte_uid = '2' ORDER BY andere.uid DESC)) ";
                        führten zu "Kein Ergebnis". Ohne die order by kommt das normale Ergebnis zurück....entweder hab ich was in der Abfrage falsch oder da steckt noch viel mehr dahinter. Anstrengend...aber lehrreich.

                        zumindest der CODE im 2ten "kasten" sieht merkwürdig aus ..

                        Code:
                        $where = "AND (meineTab.uid IN (SELECT andere_uid FROM andereTab WHERE dritte_uid='2' ORDER BY andere_uid DESC) )";
                        sollte es wohl lauten

                        im ersten "Kasten" ist die Spalte beim ORDER BY wohl auch falsch, da brauchst du eine Spalte aus dem "vorderen" SELECT spalten FROM ....
                        "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste

                        Kommentar


                        • #13
                          Zitat von eagle275 Beitrag anzeigen
                          zumindest der CODE im 2ten "kasten" sieht merkwürdig aus ..

                          Code:
                          $where = "AND (meineTab.uid IN (SELECT andere_uid FROM andereTab WHERE dritte_uid='2' ORDER BY andere_uid DESC) )";
                          sollte es wohl lauten
                          Wo ist denn da der Unterschied? Anyway, in einem IN (SELECT) Statement zu sortieren ist total sinnlos.
                          @fschmengler - @fschmengler - @schmengler
                          PHP Blog - Magento Entwicklung - CSS Ribbon Generator

                          Kommentar


                          • #14
                            das ist mir auch klar - aber der Code kam ja von "weiter oben" - aber der Unterschied ist wenigstens, dass ich die Spalte mit ihrem richtigen Namen "anspreche" während beim zitierten Code leider ein Fehler drin ist
                            "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste

                            Kommentar


                            • #15
                              Der volle Code steht in der Typo3 Extension tt_news in der class.tx_ttnews.php
                              Ein recht umfangreicher Kasten aber ich kapier jeden Tag mehr und mehr davon.

                              Um das Problem anzuschneiden: Ich muss die Extension um eine Suchfunktion erweitern, die es so nicht gibt. Allerdings soll das Original natürlich nicht verändert werden, sonst klappt anderes Gedöns -vielleicht- nicht mehr.

                              Immerhin hab ich jetzt die Ursache gefunden...er fügt am Ende noch ein "datetime ASC" ein und das zerschießt natürlich den Code, wenn vorher ein ORDER BY drin war.
                              Es ist zwar nicht die feine Art aber ich hab rausgefunden, wo und warum er das "datetime ASC" reinpackt und werde hier eine if-else-Abfrage starten. Dirty...aber dafür läufts.

                              Kommentar

                              Lädt...
                              X