Ankündigung

Einklappen
Keine Ankündigung bisher.

UNION zwei Tabellen

Einklappen

Neue Werbung 2019

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

  • UNION zwei Tabellen

    Habe schon viele Foren durchsucht und kein Resultat gefunden, sollte jemand schon eine Lösung haben freue ich mich über einen Link

    Ist der Aufbau richtig? bekomme immer Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource ...

    PHP-Code:
    $ergebnis mysql_query('SELECT a, b, c, d, e, f, g, h FROM x ORDER BY id DESC LIMIT 30 UNION SELECT i, j FROM y ORDER BY id');
    while(
    $row mysql_fetch_object($ergebnis)) {
    // machwas

    Vielen Dank


  • #2
    Nein UNION kann man so nicht verwenden. Alles andere sagt Dir der MySQL Fehler, wenn Du ihn denn mal abfragst.

    Für
    PHP-Kenntnisse:
    Fortgeschritten
    spricht der obige Code nicht.
    --

    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


    --

    Kommentar


    • #3
      Zitat von nikosch Beitrag anzeigen
      Nein UNION kann man so nicht verwenden. Alles andere sagt Dir der MySQL Fehler, wenn Du ihn denn mal abfragst.

      Für spricht der obige Code nicht.
      Ist PHP MySQL?

      Kommentar


      • #4
        Dann schau doch mal was mysql_error() sagt...

        Zumindest mal kann es nicht funktionieren, wenn die beiden SELECT-Statements eine unterschiedliche Anzahl an Spalten selektieren, eine Sortierung auf die einzelnen SELECTs ist genauso unsinnig.
        "Mein Name ist Lohse, ich kaufe hier ein."

        Kommentar


        • #5
          Ist PHP MySQL?
          Nein, aber der abfragende Teil, die fehlende Fehlerverarbeitung etc. sind PHP.
          --

          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
          Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


          --

          Kommentar


          • #6
            eine Sortierung auf die einzelnen SELECTs ist genauso unsinnig.
            Nicht ganz.
            If ORDER BY appears with LIMIT, it is used to determine the subset of the selected rows to retrieve for the SELECT, but does not necessarily affect the order of those rows in the final UNION result. If ORDER BY appears without LIMIT in a SELECT, it is optimized away because it will have no effect anyway.
            --

            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
            Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


            --

            Kommentar


            • #7
              Die selektierte Spaltenanzahl muss gleich sein. Außerdem macht man group by und den ganzen gedöhns am Ende

              Code:
              (SELECT spalte1, spalte2 FROM tabelle1) UNION 
              (SELECT spalte1, spalte2 FROM tabelle2)
              zum Beispiel...
              Auf die Order würde ich mit Idelafall versuchen zu verzichten, da bei relativ großen Datenmengen das einen Filesort macht und ne Temp-Table anlget...
              Hatte ich mal bei einem Problem mit ner Tabelle von mehreren Mio. Datensätzen...

              Nachtrag:
              Und ansonsten finde ich es echt lächerlich, dass nicht versucht wird, sich die Fehler aus zugeben... Bei PHP und MySql kann man doch so schön debuggen...
              "My software never has bugs, it just develops random features."
              "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

              Kommentar


              • #8
                Nochmal: Das ORDER ist hier sinnvoll, weil es im Zusammenhang mit dem LIMIT steht. Wenn ich z.B. die ersten 10 und die letzten 10 DS einer Tabelle ermitteln will, erreiche ich das, indem ich ORDER BY kriterium LIMIT 10 mit ORDER BY kriterium DESC LIMIT 10 „unioniere“.
                --

                „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                --

                Kommentar


                • #9
                  Zitat von nikosch Beitrag anzeigen
                  „unioniere“
                  No. 1
                  Das Wort werde ich mir aneignen!
                  "My software never has bugs, it just develops random features."
                  "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

                  Kommentar


                  • #10
                    Zitat von nikosch Beitrag anzeigen
                    Nochmal: Das ORDER ist hier sinnvoll, weil es im Zusammenhang mit dem LIMIT steht. Wenn ich z.B. die ersten 10 und die letzten 10 DS einer Tabelle ermitteln will, erreiche ich das, indem ich ORDER BY kriterium LIMIT 10 mit ORDER BY kriterium DESC LIMIT 10 „unioniere“.
                    Ja klar habe ich auch gemacht, ich wollte nur anmerken, dass diese Aktion sehr lange dauern kann und darauf wollte ich einfach hinweisen. Außerdem funktioniert das LIMIT beim UNION ein wenig anders. Dabei werden glaube ich mehr Datensätze rausgezogen als man angibt. Und am Ende auf die passende Anzahl zugeschnitten. Wie gesagt glaube ich.
                    "My software never has bugs, it just develops random features."
                    "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

                    Kommentar


                    • #11
                      Aber doch nicht die inneren LIMITs. Zugegeben, dafür müste er klammern. Aber naja, ich vermute, hier ist eh eher was Richtung JOIN gesucht. Die Feldnamen sprechen jedenfalls dafür.
                      --

                      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                      Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                      --

                      Kommentar


                      • #12
                        OK stimmt das waren die inneren LINITs. Das äußere greift glaube ich gar nicht oder? Kannst du was zu sagen, weiß ich jetzt leider auch nimmer so genau
                        "My software never has bugs, it just develops random features."
                        "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

                        Kommentar


                        • #13
                          Doch eigentlich geht das. Ich benutze in einer Applikation UNION mit LIMIT 1 um einen Content und einen Fallback-Content auszulesen. Mögliche Anwendungsbeispiele sind: I18n oder eine Fehlerseite, wenn ein angeforderter Content nicht vorhanden ist.
                          --

                          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                          Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                          --

                          Kommentar


                          • #14
                            Ok danke für die Info. Werde ich mir mal bei Gelegenheit näher anschauen.
                            "My software never has bugs, it just develops random features."
                            "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

                            Kommentar

                            Lädt...
                            X