Twilo: Probleme beim Join

Hallo,

$daten = array(  
  _DBTAB.'eintrag',  
  _DBTAB.'bilder',  
  (int)$id,  
);  
$sql = vsprintf('SELECT * FROM %s AS t1 LEFT JOIN %s AS t2 ON t2._newsId = t1._id WHERE t1._id = %s', $daten);  
$datensatz = $db->getRow($sql);

ein Eintrag kann mehrere Bilder enthalten
bei mein SQL-Query wird nur das erste Bild abgerufen

wie müßte ich das ganze angehen; damit ich alle Bilddaten mit im Array habe?

mfg
Twilo

  1. Hi,

    $sql = vsprintf('SELECT * FROM %s AS t1 LEFT JOIN %s AS t2 ON t2._newsId = t1._id WHERE t1._id = %s', $daten);

    das ist der Code irgend einer Programmiersprache. Wie lautet das daraus resultierende SQL-Statement?

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hallo,

      $sql = vsprintf('SELECT * FROM %s AS t1 LEFT JOIN %s AS t2 ON t2._newsId = t1._id WHERE t1._id = %s', $daten);

      das ist der Code irgend einer Programmiersprache.

      PHP ist nicht irgendeine, sondern DIE Programmiersprache ;-)

      Wie lautet das daraus resultierende SQL-Statement?

      es taucht im Array nur einmal _bildName und _bildId auf
      wie kann ich MySQL dazu veranlassen, dass er es z.B. so macht _3_bildName, etc.
      oder sollte ich die Bilder lieber separat abrufen?

      mfg
      Twilo

      1. Hi,

        es taucht im Array nur einmal _bildName und _bildId auf
        wie kann ich MySQL dazu veranlassen, dass er es z.B. so macht _3_bildName, etc.
        oder sollte ich die Bilder lieber separat abrufen?

        Das ist _nicht_ die Antwort auf die Frage, wie das resultierende SQL-Statement aussieht. Die Antwort darauf hätte mit "SELECT" begonnen :-)

        Es geht nur darum mal nachzugucken, was denn jetzt das endgültige Statement ist, Skriptkode enthält zu viele Variablen...

        MfG
        Rouven

        --
        -------------------
        ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
        1. Hallo,

          es taucht im Array nur einmal _bildName und _bildId auf
          wie kann ich MySQL dazu veranlassen, dass er es z.B. so macht _3_bildName, etc.
          oder sollte ich die Bilder lieber separat abrufen?
          Das ist _nicht_ die Antwort auf die Frage, wie das resultierende SQL-Statement aussieht. Die Antwort darauf hätte mit "SELECT" begonnen :-)

          axo ^^

          SELECT * FROM xxx_eintrag AS t1 LEFT JOIN xxx_bilder AS t2 ON t2._newsId = t1._id WHERE t1._id = 1

          das waren doch nur 3 Variablen, die eigentlich auch klar sein sollten, oder auch nicht *g*

          mfg
          Twilo

      2. Hi,

        PHP

        ach, PHP ist das.

        ist nicht irgendeine, sondern DIE Programmiersprache ;-)

        Ja: DIE für Anfänger ungeeignetste.

        Wie lautet das daraus resultierende SQL-Statement?
        es taucht im Array [...]

        Wie lautet das SQL-Statement?

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Hallo,

          PHP

          ach, PHP ist das.

          im Code stand doch lang=php

          ist nicht irgendeine, sondern DIE Programmiersprache ;-)

          Ja: DIE für Anfänger ungeeignetste.

          welche ist denn für Anfänger geeignet?
          ich hatte mal vor 3 - 4 Jahren mit Perö angefangen, wurde damit aber nicht wirklich glücklich

          mfg
          Twilo

  2. Hallo,

    $datensatz = $db->getRow($sql);

    ^Woher kommt das Objekt $db? Was macht die Methode getRow(String) mit dem übergebenen String?

    bei mein SQL-Query wird nur das erste Bild abgerufen

    Wirklich durch die Query? Oder liefert die Query schon mehrere Datensätze zurück, Du rufst aber mit PHP nur einen ab? Die Bezeichner "datensatz" und "getRow" spechen jedenfalls für letzteres.

    viele Grüße

    Axel

    1. Hallo,

      $datensatz = $db->getRow($sql);
                      ^Woher kommt das Objekt $db? Was macht die Methode getRow(String) mit dem übergebenen String?

      das Object $db kommt vom PEAR Package DB
      DB_common::getRow() -- Runs a query and returns the first row

      bei mein SQL-Query wird nur das erste Bild abgerufen
      Wirklich durch die Query? Oder liefert die Query schon mehrere Datensätze zurück, Du rufst aber mit PHP nur einen ab? Die Bezeichner "datensatz" und "getRow" spechen jedenfalls für letzteres.

      ich bekommem als Ergebnis ein Array mit den ganzen Spaltennamen
      die Spaltennamem samt Inhalt werden auch vom 1. Bild abgerufen

      aber nicht vom 2 bzw. 3

      mfg
      Twilo

      1. Hallo,

        das Object $db kommt vom PEAR Package DB
        DB_common::getRow() -- Runs a query and returns the first row

        Ja. Du hast verstanden was "returns _the_ _first_ row" bedeutet und Dir die Beispiele aus http://pear.php.net/manual/en/package.database.db.db-common.getrow.php angesehen?

        ich bekommem als Ergebnis ein Array mit den ganzen Spaltennamen
        die Spaltennamem samt Inhalt werden auch vom 1. Bild abgerufen
        aber nicht vom 2 bzw. 3

        Ja, das wäre dann ja auch der 2. und 3. Datesatz oder die zweite und dritte Zeile, im Gegensatz zur "first row".

        viele Grüße

        Axel

        1. Hallo,

          das Object $db kommt vom PEAR Package DB
          DB_common::getRow() -- Runs a query and returns the first row
          Ja. Du hast verstanden was "returns _the_ _first_ row" bedeutet und Dir die Beispiele aus http://pear.php.net/manual/en/package.database.db.db-common.getrow.php angesehen?

          ich dachte, dass er das nur auf den Hauptdatensatz bezieht...

          ich bekommem als Ergebnis ein Array mit den ganzen Spaltennamen
          die Spaltennamem samt Inhalt werden auch vom 1. Bild abgerufen
          aber nicht vom 2 bzw. 3
          Ja, das wäre dann ja auch der 2. und 3. Datesatz oder die zweite und dritte Zeile, im Gegensatz zur "first row".

          getAll wird mir da denke ich auch nicht viel weiter helfen, da ja das selbe Problem besteht

          mfg
          Twilo

          1. echo $begrüßung;

            ich dachte, dass er das nur auf den Hauptdatensatz bezieht...

            Die Begrifflichkeit "Hauptdatensatz" gibt es nicht bei einem Select-Statement. Es wird immer ein  "rechteckiges" Ergebnis bestehend aus x Zeilen zu y Spalten zurückgegeben.

            getAll wird mir da denke ich auch nicht viel weiter helfen, da ja das selbe Problem besteht

            Du wirst es sicher schon probiert haben, ob DB_common::getAll() etwas für dich passendes liefert. Wenn nicht, dann gib doch mal ein Beispiel an, wie dein Ergebnis aussehen soll.

            echo "$verabschiedung $name";

  3. Hallo,

    die Datenbankstruktur sieht wie folgt aus

    -- --------------------------------------------------------  
    
    -- 
    -- Tabellenstruktur für Tabelle `news_1_bilder`  
    --  
      
    CREATE TABLE `news_1_bilder` (  
      `_id` int(12) unsigned NOT NULL auto_increment,  
      `_newsId` int(12) unsigned NOT NULL default '0',  
      `_bildName` varchar(50) NOT NULL default '',  
      `_bildText` varchar(255) NOT NULL default '',  
      PRIMARY KEY  (`_id`)  
    ) TYPE=MyISAM;  
      
    --  
    -- RELATIONEN DER TABELLE `news_1_bilder`:  
    --   `_newsId`  
    --       `news_1_eintrag` -> `_id`  
    --  
      
    -- --------------------------------------------------------  
      
    --  
    -- Tabellenstruktur für Tabelle `news_1_eintrag`  
    --  
      
    CREATE TABLE `news_1_eintrag` (  
      `_id` int(12) unsigned NOT NULL auto_increment,  
      `_vorname` varchar(255) NOT NULL default '',  
      `_nachname` varchar(255) NOT NULL default '',  
      `_funktion` varchar(255) NOT NULL default '',  
      `_ort` varchar(255) NOT NULL default '',  
      `_telefon` varchar(50) NOT NULL default '',  
      `_mail` varchar(255) NOT NULL default '',  
      `_kategorie` varchar(255) NOT NULL default '',  
      `_newsart` varchar(255) NOT NULL default '',  
      `_title` varchar(200) NOT NULL default '',  
      `_datum` varchar(255) NOT NULL default '',  
      `_message` text NOT NULL,  
      `_browser` varchar(255) NOT NULL default '',  
      `_ip` varchar(15) NOT NULL default '',  
      `_host` varchar(255) NOT NULL default '',  
      `_eintrag` datetime NOT NULL default '0000-00-00 00:00:00',  
      `_gelesen` datetime NOT NULL default '0000-00-00 00:00:00',  
      PRIMARY KEY  (`_id`)  
    ) TYPE=MyISAM;
    

    mfg
    Twilo

    1. Hallo,

      also irgendetwas haut mit mein Post nicht hin...
      nur was?

      mfg
      Twilo

      1. Hallo Twilo.

        also irgendetwas haut mit mein Post nicht hin...
        nur was?

        Kleiner Test:

        --

        Einen schönen Sonntag noch.
        Gruß, Ash*feel free*ura
        --
        Selfcode: sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:) fl:( ss:) ls:[ js:|
        30 Days to becoming an Opera8 Lover -- Troubleshooting
        Meine Browser: Opera 8.50 | Firefox 1.0.7 | Lynx 2.8.5 | Netscape 4.7 | IE 6.0
        Use OpenOffice.org
        1. Hallo,

          also irgendetwas haut mit mein Post nicht hin...
          nur was?

          Kleiner Test:

          das muss irgendetwas mit mein Code-Bereich zu tun haben...

          ob das Forum da irgendwo ein Bug hat?

          mfg
          Twilo

      2. Hi,

        also irgendetwas haut mit mein Post nicht hin...
        nur was?

        Welches Problem hast Du denn?

        Dein Code enthält die Zeichenfolge Zeilenumbruch Minus Minus Leerzeichen Zeilenumbruch - das ist das, was üblicherweise (und auch hier im Forum) eine Signatur einleitet.

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        Schreinerei Waechter
        Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
        1. Hallo MudGuard.

          Dein Code enthält die Zeichenfolge Zeilenumbruch Minus Minus Leerzeichen Zeilenumbruch - das ist das, was üblicherweise (und auch hier im Forum) eine Signatur einleitet.

          Aber nicht in dem Umfang, wie es bei Twilo's Posting der Fall war.
          Die darauffolgende Threadliste wird wie in der Signatur befindlich angezeigt.

          Einen schönen Sonntag noch.

          Gruß, Ash*feel free*ura

          --
          Selfcode: sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:) fl:( ss:) ls:[ js:|
          30 Days to becoming an Opera8 Lover -- Troubleshooting
          Meine Browser: Opera 8.50 | Firefox 1.0.7 | Lynx 2.8.5 | Netscape 4.7 | IE 6.0
          Use OpenOffice.org
          1. Hi,

            Dein Code enthält die Zeichenfolge Zeilenumbruch Minus Minus Leerzeichen Zeilenumbruch - das ist das, was üblicherweise (und auch hier im Forum) eine Signatur einleitet.

            Aber nicht in dem Umfang, wie es bei Twilo's Posting der Fall war.
            Die darauffolgende Threadliste wird wie in der Signatur befindlich angezeigt.

            Kann ich nicht nachvollziehen - weder in der my- noch in der nicht-my-Ansicht.

            cu,
            Andreas

            --
            Warum nennt sich Andreas hier MudGuard?
            Schreinerei Waechter
            Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
            1. Hallo MudGuard.

              Kann ich nicht nachvollziehen - weder in der my- noch in der nicht-my-Ansicht.

              Was steht bei dir in der Textarea bei Twilo's Posting?

              Bei mir:

              Hallo,

              die Datenbankstruktur sieht wie folgt aus


              
              >   
              > mfg  
              > Twilo  
                
                
              Einen schönen Sonntag noch.  
                
              Gruß, Ash\*feel free\*ura  
              
              -- 
              Selfcode: sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:) fl:( ss:) ls:[ js:|  
              [30 Days to becoming an Opera8 Lover](http://operalover.tntluoma.com/8/) -- [Troubleshooting](http://operalover.tntluoma.com/8/troubleshooting)  
              Meine Browser: [Opera 8.50](http://opera.com/download/) | [Firefox 1.0.7](http://www.mozilla.org/products/firefox/all) | [Lynx 2.8.5](http://lynx.isc.org/current/) | Netscape 4.7 | IE 6.0  
              ![Use OpenOffice.org](http://download.noctus.net/gallery/ooo.png)
              
              1. Hi,

                Was steht bei dir in der Textarea bei Twilo's Posting?

                Ah - ja, da ist was kaputt. Hab ich übersehen.

                cu,
                Andreas

                --
                Warum nennt sich Andreas hier MudGuard?
                Schreinerei Waechter
                Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
            2. Hallo,

              Kann ich nicht nachvollziehen - weder in der my- noch in der nicht-my-Ansicht.

              bei mir hat die Schriftfarbe ab

              mfg
              Twilo

              nur noch grau

              der Text in der Textarea stimmt auch nicht ganz

              siehe Screenshot

              mfg
              Twilo

              1. Hi,

                sagt mal, kann es sein, dass der Code-Syntaxhighlighter Schuld ist? Da steht innerhalb eines SQL-Blocks ein "--", das leitet doch einen Kommentar ein. Kann es sein, dass der Highlighter sich da verschluckt hat?

                MfG
                Rouven

                --
                -------------------
                ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
  4. $sql = vsprintf('SELECT * FROM %s AS t1 LEFT JOIN %s AS t2 ON t2._newsId = t1._id WHERE t1._id = %s', $daten);
    $datensatz = $db->getRow($sql);[/code]

    ein Eintrag kann mehrere Bilder enthalten
    bei mein SQL-Query wird nur das erste Bild abgerufen

    wie müßte ich das ganze angehen; damit ich alle Bilddaten mit im Array habe?

    möglicherweise führt die WHERE bedingung nur zu einer ergebniszeile. mit num_rows() läßt sich die anzahl ermitteln.

    führt dein WHERE t1._id = %s' durch eine unique-id nur zu einer ergebniszeile, müßtest du mehrere id in einer liste WHERE id IN (id1, id2, ..) angeben.