[MySQL 4.1] joinen für fortgeschrittene

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

  • [MySQL 4.1] joinen für fortgeschrittene

    Hi,

    ich hab ein kleines Problem mit einer mysql Abfrage. Folgende Tabellen sind (stark vereinfacht) vorhanden:

    Tabelle: Fragen
    Spalten: f_id | frage

    Tabelle: Beziehung
    Spalten: f_id | a_id

    Tabelle: Antworten
    Spalten: a_id | antwort | Bereich_id

    So, ich möchte nun eine Tabelle erstellen in der die Frage steht gefolgt von den möglichen Antworten. Da es sich dabei aber um mehrere 1000 Datensätze handelt sollte das ganze in nur einen Query passen - geht das ohne die Fragen mehrfach in meinem Ergebnis zu haben?

    Derzeit habe ich es sehr Serverlastig so gelöst, dass ich eine Abfrage laufen lassen aus der alle Fragen erzeugt werden. Diese loope ich dann durch und in der Schleife ermittle ich mit einer Funktion alle möglichen antworten... Nur das macht mein Server nicht lange mit...

    Bin für jeden Tipp dankbar.

    Gruß

  • #2
    Aus dem Bauch heraus :

    Tabelle: Fragen
    Spalten: f_id | frage

    Tabelle: Beziehung
    Spalten: f_id | a_id

    Tabelle: Antworten
    Spalten: a_id | antwort | Bereich_id

    SELECT t1.f_id, t1.frage,
    t3.antwort
    FROM Fragen t1
    LEFT JOIN Beziehung t2
    ON t1.f_id = t2._fid
    LEFT JOIN Antworten
    ON t2.a_id = t3.a_id

    ok, die frage taucht immer wieder auf, aber wenn du z.B. eine schleife mahst um alle fragen auszulesen, einfach prüfen, ob sich im ergebnis die f_id ändert, wenn ja dann neue tabelle anfangen oder was auch immer...


    An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

    Kommentar


    • #3
      und was ist denn "für fortgeschrittene" dabei?

      Nein, eine Abfrage und dann PHP-seitig den Gruppenwechsel abfangen.

      Kommentar


      • #4
        Original geschrieben von asp2php
        und was ist denn "für fortgeschrittene" dabei?

        Nein, eine Abfrage und dann PHP-seitig den Gruppenwechsel abfangen.
        zzz. Sprich ich muss die Logik über das php Skript abdecken. Es gibt keine Möglichkeit in mysql z. B. ein array im Ergebnis Array zu erstellen.

        Das Ergebnis über die doppelte Fragen ID aufzuräumen gefällt mir nicht so - das Skript dass die Ausgabe (in ein Excel Sheet) macht ist so schon sehr sehr sehr komplex... -> ich muss selber immer wieder schauen was jetzt genau welcher Teil macht - andere die das evtl. mal pflegen müssen will ich nie treffen -> die fluchen bestimmt

        Gruß

        Kommentar


        • #5
          da du über Logik sprichst

          die Datenbank ist in Tabellen aufgebaut und somit kann sie auch nur tabellenartig die Daten zurückliefern. Nur bei PHP bekommst du keine komplette Tabelle in einem Rutsch geliefert (in anderen Sprachen aber schon), d.h. aber noch lange nicht, dass das Ergebnis einer Abfrage keine Tabelle ist , in PHP kannst du nur zeilenweise abrufen. Daher wie soll es denn aussehen, wenn nicht:

          a | a1
          a | a2
          a | a3
          ...
          b | b1
          b | b2
          ...

          weil:

          a => array(a1,a2,a3)
          b => array(b1,b2,b3)

          dann keine Tabelle mehr ist und auch niemals ein Produkt von Tabellen sein kann. Oder nenne mir ein Matrixenoperationsformel der sowas liefern

          Kommentar


          • #6
            ok,

            hatte ich befürchtet. Danke für die schnellen Antwoten! So wie es aussieht wird mein Server wohl die Last zu tragen haben. Da ich nämlich beim durchlaufen der Ergebnistabelle ( ) direkt ein array bestücke und dieses im weiteren Verlauf nur schwer mit weiteren Antworten bestücken kann, fällt die Lösung mit dem aussortieren anhand der Fragen ID's flach.

            -> ja, das array muss sein. Selbiges ist Futter für Smarty...

            DANKE!

            Kommentar

            Lädt...
            X