Seite 1 von 1

Datenbankabfrage

Verfasst: So 3. Sep 2006, 17:35
von php0815
Ich weiß es gehört nicht ins Contenidoforum aber vieleicht kann sich das mal einer anschauen.

Habe eine Datenbank abfrage über mehrere Tabellen realiesiert sie funktioniert sieht aber nicht so schöhn aus.

Kann man die abfrage auch anders z.b mit "left join"machen.

Code: Alles auswählen

if($name1[0]==""){$kat1="null";}else{ $kat1 = $name1[0];}
if($name1[1]==""){$kat2="null";}else{ $kat2 = $name1[1];}
if($name1[2]==""){$kat3="null";}else{ $kat3 = $name1[2];}
if($name1[3]==""){$kat4="null";}else{ $kat4 = $name1[3];}
if($name1[4]==""){$kat5="null";}else{ $kat5 = $name1[4];}
if($name1[5]==""){$kat6="null";}else{ $kat6 = $name1[5];}
if($name1[6]==""){$kat7="null";}else{ $kat7 = $name1[6];}

      $db2 = new DB_Contenido;
      $sql =$sql = 'SELECT
          B.ku_nr,
          B.name,
          B.kuenstlername,
          B.vorname,
       	  B.strasse,
          B.plz,
          B.ort,
          B.tel,
          B.fax,
          B.mobil,
          B.email,
          B.www,
          C.beschreibung,
          C.personen,
          C.zielgruppe,
          C.publikumsgroese,
          C.programmdauer,
          C.preis,
          C.referenzen,
          (D.january +
           D.february +
           D.march +
           D.april +
           D.may +
           D.june +
           D.july +
           D.august +
           D.september +
           D.october +
           D.november +
           D.december)AS besuche
        FROM
          '.$cfg["tab"]["frontdatkategorie"].' AS A,
          '.$cfg["tab"]["frontdatadress"].' AS B,
          '.$cfg["tab"]["frontdatkuenstlerbesch"].' AS C,
          '.$cfg["tab"]["frontdatstatistic"].' AS D
        WHERE
          ((A.kat_id1 = "'.$kat1.'" OR
          A.kat_id2 = "'.$kat1.'" OR
          A.kat_id3 = "'.$kat1.'" OR
          A.kat_id4 = "'.$kat1.'" OR
          A.kat_id5 = "'.$kat1.'" OR
          A.kat_id6 = "'.$kat1.'" OR
          A.kat_id7 = "'.$kat1.'") OR
          (A.kat_id1 = "'.$kat2.'" OR
          A.kat_id2 = "'.$kat2.'" OR
          A.kat_id3 = "'.$kat2.'" OR
          A.kat_id4 = "'.$kat2.'" OR
          A.kat_id5 = "'.$kat2.'" OR
          A.kat_id6 = "'.$kat2.'" OR
          A.kat_id7 = "'.$kat2.'") OR
          (A.kat_id1 = "'.$kat3.'" OR
          A.kat_id2 = "'.$kat3.'" OR
          A.kat_id3 = "'.$kat3.'" OR
          A.kat_id4 = "'.$kat3.'" OR
          A.kat_id5 = "'.$kat3.'" OR
          A.kat_id6 = "'.$kat3.'" OR
          A.kat_id7 = "'.$kat3.'") OR
          (A.kat_id1 = "'.$kat4.'" OR
          A.kat_id2 = "'.$kat4.'" OR
          A.kat_id3 = "'.$kat4.'" OR
          A.kat_id4 = "'.$kat4.'" OR
          A.kat_id5 = "'.$kat4.'" OR
          A.kat_id6 = "'.$kat4.'" OR
          A.kat_id7 = "'.$kat4.'") OR
          (A.kat_id1 = "'.$kat5.'" OR
          A.kat_id2 = "'.$kat5.'" OR
          A.kat_id3 = "'.$kat5.'" OR
          A.kat_id4 = "'.$kat5.'" OR
          A.kat_id5 = "'.$kat5.'" OR
          A.kat_id6 = "'.$kat5.'" OR
          A.kat_id7 = "'.$kat5.'") OR
          (A.kat_id1 = "'.$kat6.'" OR
          A.kat_id2 = "'.$kat6.'" OR
          A.kat_id3 = "'.$kat6.'" OR
          A.kat_id4 = "'.$kat6.'" OR
          A.kat_id5 = "'.$kat6.'" OR
          A.kat_id6 = "'.$kat6.'" OR
          A.kat_id7 = "'.$kat6.'") OR
          (A.kat_id1 = "'.$kat7.'" OR
          A.kat_id2 = "'.$kat7.'" OR
          A.kat_id3 = "'.$kat7.'" OR
          A.kat_id4 = "'.$kat7.'" OR
          A.kat_id5 = "'.$kat7.'" OR
          A.kat_id6 = "'.$kat7.'" OR
          A.kat_id7 = "'.$kat7.'")) AND
          A.ku_nr = B.ku_nr AND
          B.ku_nr = C.ku_nr AND
          C.ku_nr = D.ku_nr
        ORDER BY besuche DESC
        LIMIT 0,10';
Kann man die Abfrage in eine Schleife setzen

Code: Alles auswählen

(A.kat_id1 = "'.$kat1.'" OR
          A.kat_id2 = "'.$kat1.'" OR
          A.kat_id3 = "'.$kat1.'" OR
          A.kat_id4 = "'.$kat1.'" OR
          A.kat_id5 = "'.$kat1.'" OR
          A.kat_id6 = "'.$kat1.'" OR
          A.kat_id7 = "'.$kat1.'") OR
          (A.kat_id1 = "'.$kat2.'" OR
          A.kat_id2 = "'.$kat2.'" OR
          A.kat_id3 = "'.$kat2.'" OR
          A.kat_id4 = "'.$kat2.'" OR
          A.kat_id5 = "'.$kat2.'" OR
          A.kat_id6 = "'.$kat2.'" OR
          A.kat_id7 = "'.$kat2.'") OR
Wenn niemand Antwortet bin ich auch nicht traurig es funzt ja.
Muß mich doch noch mehr mit PHP, MySql auseinandersetzten.

Verfasst: So 3. Sep 2006, 21:07
von HerrB
Da das sowieso alles OR ist kannst Du auch

A.kat_id1 IN ("'.$kat1.','.$kat2.','.$kat3.','.$kat4.','.$kat5.','.$kat6.','.$kat7.') OR
A.kat_id2 IN ("'.$kat1.','.$kat2.','.$kat3.','.$kat4.','.$kat5.','.$kat6.','.$kat7.') OR...

usw. schreiben.

Gruß
HerrB

Verfasst: Mo 4. Sep 2006, 09:13
von php0815
Danke für die Antwort.
War noch ein kleiner Fehler drinn funzt jetzt aber wunderbar.

Code: Alles auswählen

A.kat_id2 IN ("'.$kat1.'","'.$kat2.'","'.$kat3.'","'.$kat4.'","'.$kat5.'","'.$kat6.'","'.$kat7.'")
Es haben ein paar Anführungszeichen gefehlt.

Verfasst: Mo 4. Sep 2006, 23:25
von HerrB
Wollte Dich nur testen... :wink:

Gruß
HerrB

Verfasst: Mi 6. Sep 2006, 09:41
von php0815
Danke für den Test
Habe echo $sql; eingefügt das eine " habe ich gesehen, entfernt, ging nicht, alle hinzugefügt, funzte.

Wie heist es so schöhn wer lesen kann ist im Vorteil. :lol: