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

  • sebii
    hat ein Thema erstellt UNION zwei Tabellen.

    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

  • Paul.Schramenko
    antwortet
    Ok danke für die Info. Werde ich mir mal bei Gelegenheit näher anschauen.

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    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.

    Einen Kommentar schreiben:


  • Paul.Schramenko
    antwortet
    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

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    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.

    Einen Kommentar schreiben:


  • Paul.Schramenko
    antwortet
    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.

    Einen Kommentar schreiben:


  • Paul.Schramenko
    antwortet
    Zitat von nikosch Beitrag anzeigen
    „unioniere“
    No. 1
    Das Wort werde ich mir aneignen!

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    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“.

    Einen Kommentar schreiben:


  • Paul.Schramenko
    antwortet
    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...

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    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.

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    Ist PHP MySQL?
    Nein, aber der abfragende Teil, die fehlende Fehlerverarbeitung etc. sind PHP.

    Einen Kommentar schreiben:


  • Chriz
    antwortet
    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.

    Einen Kommentar schreiben:


  • sebii
    antwortet
    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?

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    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.

    Einen Kommentar schreiben:

Lädt...
X