kleine unterstützung beim join

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

  • kleine unterstützung beim join

    habe zwei tabs:
    kat_referenzen mit id|kat|id_language

    tab 2:
    referenzen mit id|id_kat_referenzen|ueber|text|usw.

    zusammenhang ist denke klar. in referenzen steht die id von kat_referenzen, so kann ich genau die refernzen der entsprechenden kategorie zuordnen.
    ich möchte jetzt aus kat_referenzen drei verschiedene kategorien holen (kat IN (1,3,5) ) und im gleichen atemzug die referenzen zu der kategorie, welche ja über id genau zugeordnet sind. hab jetzt ne menge probiert, doch dadurch, dass ich gleich drei verschiedene ids aus kat_referenzen hole, gelingt es mir nicht die refernzen zu der id zu holen. irgendwie hackt der da immer. mein letzter versuch:
    PHP-Code:
    $result MYSQL_QUERY("SELECT * from kat_referenzen JOIN referenzen where kat_referenzen.id IN (".$in.") AND referenzen.id_kat_referenzen = referenzen.id AND kat_referenzen.id_language = '".$id_language."'") or die (mysql_error()); 
    will auch nicht wie ich. tip?

    ach ja, $in="1,3,5" sieht so aus.
    [color=red]musse rühre, musse probiere=>iss a pulsgeber ![/color]

  • #2
    Und im PHP-Forum will es auch nicht...

    *VERSCHIEB*

    Kommentar


    • #3
      soll das join raten, womit es joinen soll?

      Kommentar


      • #4
        du brauchst bei nem join auch ne angabe wie er joinen soll

        probier mal
        Code:
        SELECT 
          k.kat, r.ueber 
        FROM
          kat_referenzen k
          INNER JOIN referenzen r ON (k.id=r.kategorie_id)
        WHERE
          k.id IN (1,3,5) 
          AND 
          k.id_language = 4711
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          sorry wegem dem falschen forum.
          okay, war jetzt auch schon ein schritt weiter, probiere es gleich.
          [color=red]musse rühre, musse probiere=>iss a pulsgeber ![/color]

          Kommentar


          • #6
            supi, das war der tipp in die richtige richtung.
            jetzt folgt das nächste problem, welches eigentlich nun ins php-forum gehört, aber jetzt sind wir einmal hier.
            ich habe drei kategorien gezogen, zu jeder gibts es ca. 20 referenzen.
            jetzt möchte ich einmal die kategorie als überschrift, dann die 20 refs. drunter, darunter die nächste kat als überschrift und darunter wieder die refs und mit der letzten kat genauso.
            kann ich die gezogenen daten splitten und in zwei verschachtelten whiles verarbeiten? oder ist das unelegant?
            versuche schon die ganze rum. bei ner normalen while bringt er kat als überschrift und darunter eine ref., dann wieder überschr. und ref.
            begrenze ich das ganze durch nen zähler, gehts auch nicht, da es ja drei verschieden kats sind.
            wie kann ich das lösen?
            [color=red]musse rühre, musse probiere=>iss a pulsgeber ![/color]

            Kommentar


            • #7
              du sortierst nach k.id (ORDER BY)

              vor deiner while-schleife zum ausgeben setzt du eine hilfsvariable (z.b. $old_cat) auf -1 oder nen anderen wert, der nicht als echte kategorie vorkommt

              in der whileschleife prüfst du ob $old_cat der kategorie-id des aktuellen eintrags entspricht, wenn nein, dann aktualisierst du $old_cat, gibst ne neue überschrift aus, weil du nen rubrikwechsel hast und machst dann die ausgabe weiter
              Ich denke, also bin ich. - Einige sind trotzdem...

              Kommentar


              • #8
                coole sache, vielen dank! will jemad die lösung sehen?
                THX
                [color=red]musse rühre, musse probiere=>iss a pulsgeber ![/color]

                Kommentar


                • #9
                  poste einfach mal, der vollständigkeit wegen!

                  Kommentar


                  • #10
                    ACHTUNG, ungekürzt!
                    PHP-Code:
                    function get_referenzen_all_for_one(){         //holt daten aus tabelle "more" nach der id, welche auch in der entsprechenden haupttabelle verknüpft ist  
                                
                    Global $link_number;     // hauptnavi 1-7
                            
                    Global $number;          // u_navi 1-4
                            
                    Global $select;         //nimmt parameter von auf und übergibt sie nach more.php
                            
                    Global $navi;
                            
                    $zelle = array("2" => "zwei",
                                        
                    "3" => "drei",
                                            
                    "4" => "vier",
                                                
                    "5" => "fuenf"
                                            
                    );
                            
                            
                    $zahl $zelle[$link_number];//entscheidet bei der tabelle refernzen ob er nach der 1
                                            //in link_zwei, link_drei usw. schauen soll

                            //echo $zahl;
                                
                    $id_language=get_language();

                            
                    tab_head_list();     //geht los mit <tr>
                                
                    echo '<tr width="479" height="50" align="left" valign="top">';
                                echo 
                    '<td width="30" align="left" valign="top">
                                    <img src="images/spacer.gif width="1" height="1" border="0" />
                                      </td>
                                      <td width="18" align="right" valign="top">
                                          <img src="images/spacer.gif" width="14" height="9" border="0" />
                                      </td>
                                      <td width="328" align="left" valign="top" class="normueber">'
                    ;
                                echo 
                    'UNSERE REFERENZLISTE';
                                echo 
                    '</td><td width="10">&nbsp;</td><td width="93" align="right" valign="top">';
                                    echo 
                    '<a href="javascript:history.back(-1)" align="right" onfocus="this.blur()" class="more" target="_self">‹‹‹ back</a>';
                                echo 
                    '</td></tr>';
                                    
                    /********************* hier wird über den parameter $link_number von der navi entschieden, welche
                                referenzen (kategorie) benötigt werden, die von stadt, park, landschaft oder garten***************************/
                                
                            
                    switch ($link_number):
                                case 
                    2$in "1,3,5,8";
                                break;
                                case 
                    3$in "2,4";
                                break;
                                case 
                    4$in ="6";
                                break;
                                default:
                    $in "7";
                                endswitch;

                                
                    /********************* holt hier die geforderten kategorien und ids aus kat_referenzen 
                                und im gleich die refernzen entsprechend der kat id        ************************************/
                                    
                            
                    $result MYSQL_QUERY("SELECT k.id,k.kat,r.ueber,r.text,r.extra from kat_referenzen k INNER JOIN referenzen r
                            ON (k.id=r.id_kat_referenzen) where k.id IN ("
                    .$in.") AND r.link_".$zahl." = '1' AND k.id_language = '".$id_language."' ORDER BY k.id")or die (mysql_error());

                            
                                if (
                    mysql_num_rows($result)<1){echo '<div style="margin-left: 48px;" class="normfett">no data</div>';}
                                            
                    $n=-1;
                                    while(
                    $zeile=mysql_fetch_array($result)){
                                 
                                        foreach (
                    $zeile as $key => $value) {
                                            $
                    $key nl2br(str_replace("-","&ndash;",htmlentities(stripslashes($value))));
                                            
                    //$kat = str_replace("\n","<br><br>",$text);
                                        
                    }

                                
                                        if (
                    $n != $id){
                                            
                    $n=$id;
                                            echo 
                    '<tr width="479" align="left" valign="top">';
                                            echo 
                    '<td width="30" align="left" valign="top">
                                                <img src="images/spacer.gif width="1" height="1" border="0" />
                                                      </td>
                                                      <td width="18" align="right" valign="top">
                                                      <img src="images/spacer.gif" width="14" height="9" border="0" />
                                                      </td>
                                                      <td width="328" align="left" valign="top">'
                    ;
                                            echo 
                    "<div class=\"normueber\">".$kat."</div><br>";
                                            echo 
                    '</td><td width="10">&nbsp;</td><td width="93" align="left" valign="top">';
                                             echo 
                    '&nbsp';
                                            echo 
                    '</td></tr>';
                                        }
                                
                            
                                        if (
                    $id !=8){ //unterscheidung zu kat 8 ist, das diese anders dargestellt wird als die anderen
                                            
                    echo '<tr width="479" align="left" valign="top" class="normfett">';
                                            echo 
                    '<td width="30" align="left" valign="top">
                                                <img src="images/spacer.gif width="1" height="1" border="0" />
                                                      </td>
                                                      <td width="18" align="right" valign="top">
                                                      <img src="images/spacer.gif" width="14" height="9" border="0" />
                                                      </td>
                                                      <td width="328" align="left" valign="top" >'
                    ;
                                                        echo 
                    $ueber."<br>";
                                                        echo 
                    $text."<br><br>";
                                            echo 
                    '</td><td width="10">&nbsp;</td><td width="93" align="left" valign="top" class="normklein">';
                                             echo 
                    $extra."<br><br><br>";
                                            echo 
                    '</td></tr>'
                                        }else{
                                            echo 
                    '<tr width="479" align="left" valign="top" class="normklein">';
                                            echo 
                    '<td width="30" align="left" valign="top">
                                                <img src="images/spacer.gif width="1" height="1" border="0" />
                                                      </td>
                                                      <td width="18" align="right" valign="top">
                                                      <img src="images/spacer.gif" width="14" height="9" border="0" />
                                                      </td>
                                                      <td width="328" align="left" valign="top">'
                    ;
                                                        echo 
                    $ueber."<br>";
                                                        echo 
                    '<div class="normfett">'.$extra.'</div>';
                                                        echo 
                    $text."<br><br><br>";
                                            echo 
                    '</td><td width="10">&nbsp;</td><td width="93" align="left" valign="top" class="norm">';
                                             echo 
                    '<img src="images/spacer.gif" width="14" height="9" border="0" />';
                                            echo 
                    '</td></tr>'
                                        }
                                    }

                     
                        
                            
                            
                                    echo 
                    '</table>';
                                
                    mysql_free_result($result);
                        

                    [color=red]musse rühre, musse probiere=>iss a pulsgeber ![/color]

                    Kommentar

                    Lädt...
                    X