[SQL allgemein] komplizierter join

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

  • [SQL allgemein] komplizierter join

    PHP-Code:
    $query1 "SELECT * FROM ".$table." ".$online." Order by zeit DESC";
    $query2 "SELECT tut_rating * FROM lampen_bier WHERE (hier die id aus dem query1)" 

    wie mach ich da einen query raus ?
    bekomme es selber einfach nicht gebacken
    thx Mukraker

  • #2
    das sieht doch stark nach sql aus oder?

    probier mal
    PHP-Code:
    $sql='SELECT * FROM '.$table.'
    INNER JOIN lampen 
    USING (id) 
    '
    .$online.
    ORDER BY zeit DESC'

    aber ohne zu wissen, was in $online drinsteht wird's verdammt schwer... (ich tipp mal auf ne where-bedingung?)
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      ich würds halt so machen:

      PHP-Code:
      $sql "SELECT 
      tabelle1.*, tabelle2.* 
      FROM
      tabelle1, tabelle2 
      WHERE
      tabell2.id=tabelle1.id 
      ORDER BY tabelle1.zeit DESC"

      wenn du mehrere tabellen auf einmal abfragen willst musst du halt immer die entsprechende tabelle davorschreiben, gefolgt von einem punkt. also

      Code:
      tabelle.(irgendeine spalte)
      hoffe das hilft dir weiter

      mfg

      Spea

      Kommentar


      • #4
        leider noch nicht

        schade das gibt mir noch nen mysql error aus
        thx Mukraker

        Kommentar


        • #5
          vielleicht funzt es so (da in $online ja eigentlich nur ne where Bed. stehen kann, oder?)

          PHP-Code:
          SELECT '.$table.'.*, lampen_bier.* from '.$table.'lampenbier '.$online.' AND '.$table.'.id lampen_bier.id ORDER BY zeit DESC 
          oder wenn Du schon MySQL4.1 haben solltest nimm nen Subselect
          PHP-Code:
          SELECT from lampen_bier WHERE (SELECT id FROM '.$table.' '.$online.' ORDER BY zeit DESC
          btw.1 der mysqlerror kommt evtl. daher, daß Spea nen Tippfehler in seinem Statement hat
          PHP-Code:
          tabell2.id=tabelle1.id 
          da fehlt ein "e" bei tabelle2

          btw.2 was meinst Du im zweiten Statement mit SELECT tut_rating * ? Sollte das nicht entweder ne Angabe der zu selektierenden Spalten, ODER ein * sein?

          Kommentar


          • #6
            leider nein

            PHP-Code:
            SELECT '.$table.'.*, lampen_bier.* from '.$table.'lampenbier '.$online.' AND '.$table.'.id lampen_bier.id ORDER BY zeit DESC 

            also das ging leider auch noch nicht, kann es sein das der anfang auch etwas merkwürdig ist.

            SELECT '.$table.'.*, lampen_bier.* from <-
            $table direkt nach SELECT und dann sind da zwei * !!
            thx Mukraker

            Kommentar


            • #7
              steht in Deinem $table ein * drin? Eigentlich sollte da der Tabellenname.* stehen und nüchst anderes.

              Kannst Du nicht mal die Query zusammensetzen lassen, und mal als ganzes hier posten? ohne die ganzen Variablen. Irgendie steig ich auch net ganz durch, was der "<-" in deinem Kommentar aussagen soll, sorry

              Kommentar


              • #8
                sorry

                oh hatte ich vergessen mit dem $online

                PHP-Code:
                //Ausgabe der Seiten
                if (checkLogin()) $online "";
                else 
                $online "WHERE online = 1";

                //$query1 = "SELECT * FROM ".$table." ".$online." Order by zeit DESC";
                //$query2 = "SELECT tut_rating * FROM lampen_bier WHERE (hier die id aus dem query1)"

                $query= ( nun will ich query1 und 2 zusammen haben
                thx Mukraker

                Kommentar


                • #9
                  Re: leider nein

                  Original geschrieben von mukraker
                  SELECT '.$table.'.*, lampen_bier.* from <-
                  $table direkt nach SELECT und dann sind da zwei * !!
                  in $table steht ja der Tabellenname, aus der Du etwas selktieren willst. Da Du aus zwei Tabellen selektieren wills,t mußt Du den Tabellennamen mit angeben. Also Tabelle1.*, Tabelle2.* besagt ja nur, daß Du aus den beiden angegebenen Tabellen alles selektieren willst. Oder soll aus Lampen_bier nur das tut_rating selektiert werden? Dein query2 kann nämlich nicht funzen, wenn Du eine spezifische Spalte (tut_rating) und dann zusätzlich noch den * angibst.

                  Dann.. wie sieht es mit $online aus? Denn wenn checkLogin() true ist, ist $online leer, und mein letztes Statemnt was Du ausprobiert hast, kann dann natürlich nucht funktionieren, da ....WHERE ""... zu einem Fehler führt.

                  letzter Versuch jetzt, wenn das nicht funzt, weiß ich auch nicht

                  PHP-Code:
                  //Ausgabe der Seiten
                  if (checkLogin())
                  {
                  $query "SELECT ".$table.".*, lampen_bier.* FROM ".$table.", lampen_bier WHERE ".$table.".id = lampen_bier.id ORDER by zeit DESC";
                  }
                  else
                  {
                  $query "SELECT ".$table.".*, lampen_bier.* FROM ".$table.", lampen_bier WHERE ".$table.".online = 1 AND ".$table.".id = lampen_bier.id ORDER by zeit DESC";

                  die {} brauchst natürlich nicht, aber macht die Sache übersichtlicher. Und das $online ist auch überflüssig

                  Kommentar

                  Lädt...
                  X