André Laugks: mySQL: LEFT JOIN

Beitrag lesen

Hallo Antje!

:-) naja, ich arbeite zur Zeit viel mit Oracle, da vermisse ich auch einiges gegenüber mysql. Es hebt sich eben irgendwo auf.

Würde ich auch mal gern! Aber viele große Projekte beweisen, daß es auch mit mySQL geht. Man muß eben ein paar mehr Sachen "ausserhalb" der DB machen, was man bei Qracle, DB2 etc. "intern" lösen kann, ... so etwas wie Fremdschlüßel etc.

Wenn ich eine Person lösche, muß ich das eben gleich in 3 Tabellen machen, in der Daten von der Person liegen.
Für eine Tabelle muß ich i.d.R. 5 INSERTs auswühren...! Wäre nicht schlecht wenn man das in einem Rutsch machen könnte.

Da ich eh sehr gern diese Bereiche trenne, würde ich das über assoziative Arrays lösen.

$foto=array();
if (!isset($foto[$name])) $foto[$name]=array();
$foto[$name][]=$info;

while (list($key,$value)=each($foto))
{
echo $key; //der Name

for ($i=0;$i<count($value);$i++)
{

echo $value[$i]; //die Informationen
}

}

Diese Form nehme ich so ziemlich häufig. Vielleicht nutzt sie dir auch was.

Ich habe ein Forum geschrieben, so wie das selfhtml-Forum. Hier muß ich auch zwei SELECTs absetzen. Weil ich sonst die Postings nicht richtig einordnen kann, wegen gibt "Sortierprobleme" absteigend<->aufsteigend. Ab bestimmten Zeilen muß ich verschieden sortieren. Es gibt so etwas wie SQL-Baumstrukturen, mit der man dies lösen kann. Das werde ich aber erst in Version 4 oder so umsetzen, bin jetzt gerade mal bei Version 1 ;-).

while($db->fkt_fetch())
   {
      if(is_null($db->fetch["vornummer"])) // --> Anfangspostings
        {
            $zeile_start_thread[$db->fetch["id_forum"]] = array(
                                                            $db->fetch["id_forum"],
                                                            $db->fetch["betreff"],
                                                            $db->fetch["name"],
                                                            $db->fetch["datum"]);
         }
         else // --> Antwortpostings
            {
                $zeile_antwort_thread[$db->fetch["id_forum"]] = array(
                                                                $db->fetch["id_forum"],
                                                                $db->fetch["thread"],
                                                                $db->fetch["betreff"],
                                                                $db->fetch["name"],
                                                                $db->fetch["datum"],
                                                                $db->fetch["vornummer"],
                                                                $db->fetch["ebene"]);
            }
   }

z.B.
while(list($id, $inneres_array) = each($zeile_start_thread))
   {
     list($id, $betreff, $name, $datum) = $inneres_array;

...

}

In kleinen Projekten ist das kein Problem. Bei größeren Projekten oder einer größeren Serverlast kann jeder zusätzliche Select sehr viel Ballast sein.

Bei diesem Projekt könnte ich 100 SELECTs absetzen. Die Seite wird von dem Normaluser nicht genutzt, also eine Art "B2B", mit ich denke wenig Zugriffen. Der größte Teil läuft eh inerhalb eines CMS ab.

Wenn ich so manche Scripte sehe, denke ich, arbeite ich recht sparsam. :-)

MfG, André Laugks