Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] MySQL Subquery Abfrage

Einklappen

Neue Werbung 2019

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

  • [Erledigt] MySQL Subquery Abfrage

    Greetz zusammen,
    und zwar habe ich folgendes denk Problem:

    Ich habe zwei Tabellen. Die Tabelle B (*_themes) beinhaltet die Titel, die Tabelle A (*_parts) beinhaltet die Titel ID sowie sonstige Eigenschaften. (Name, Datei & co.)

    Das ganze läuft via InnoDB, im zusammenhang Foreign-Key. Soweit gut. Jetzt möchte ich aber einen zufälligen Datensatz aus der Tabelle B und diese ID mit den Datensätzen aus der Tabelle A lesen. (so das nur die zugeordneten Datensätze ausgegeben werden)

    Soweit - kein Problem. Das auslesen der ersten Datensätze(!). Per Zufall, aber ja....

    ...hat jemand eine Idee, wie der ganze Spaß wohl Funktionieren könnte? Natürlich über Subquery.



    Code:
    Code:
    SELECT
           `lp`.`name`
          ,`lp`.`filename`
          ,`lp`.`theme_id`
    FROM
          `labyrinth_parts` `lp`
    WHERE
          `lp`.`theme_id` = (SELECT
                                    `lt`.`id`
                             FROM
                                    `labyrinth_themes` `lt`
                             LIMIT 1
                            )


  • #2
    Code:
    SELECT
     `lt`.`id`
    FROM
     `labyrinth_themes` `lt`
    ORDER BY
     rand()
    LIMIT
     1

    Kommentar


    • #3
      Habe ich ebenfalls ausprobiert.

      Er zeigt darauf hin nur EINEN Datensatz an, wenn es mehrere sind. Wobei ich aber dann die anderen ebenfalls ausgegeben haben möchte, die dazu gehören.

      Kommentar


      • #4
        Oh, stimmt. Würde ich mit zwei Abfragen machen.

        Kommentar


        • #5
          Und genau das mag ich meiden, jetzt habe ich es ja schon soweit bekommen. Es ist gewiss möglich - denke ich. Nur der Rätsels Lösung, ist nicht wirklich findbar. :P

          Kommentar


          • #6
            Irgenwie verstehe ich dein Problem nicht. Deine Abfrage, ergänzt mit dem ORDER BY rand() macht doch genau das.
            Gruss
            L

            Kommentar


            • #7
              Zitat von Kevz Beitrag anzeigen
              Und genau das mag ich meiden, jetzt habe ich es ja schon soweit bekommen. Es ist gewiss möglich - denke ich. Nur der Rätsels Lösung, ist nicht wirklich findbar. :P
              Die Frage ist auch, ob es sich lohnt.
              google "mysql order by rand" -> ~jk ORDER BY RAND()

              Zitat von lazydog Beitrag anzeigen
              Irgenwie verstehe ich dein Problem nicht. Deine Abfrage, ergänzt mit dem ORDER BY rand() macht doch genau das.
              Leider nicht. Die Abfrage mit "order by rand()" wird pro Vergleich über WEHRE einmal ausgeführt. Und dann werden jedes Mal die Datensätze angeordnet und der erste zurückgeliefert. a) ist das Ergebnis nicht das gesuchte. b) schreckliche Performance.
              Das war also wirklich ein ganz dummer Tipp von mir.

              Kommentar

              Lädt...
              X