Hallöle, Ilja,
SELECT hier_die_gewünschten_spalten
FROM kontakte k
WHERE k.aussteller_id = $input_aussteller AND
(k.besucher_id= $input_aussteller OR k.id IN
(
SELECT k2.id
FROM kontakte k2
WHERE k2.gruppen_id = k.gruppen_id
AND k2.austeller_id = $input_aussteller
)
)versuch das mal auf dein jetztiges datendesign anzuwenden. ich kann mich nur nicht mehr erinnern, ob du unterabfragen abfragen kannst, sprich mysql 4.1+ hast.
Nöö, habe MySQL 3.23.58. Freut mich irgenwie, dass du es auch mit zwei Abfragen (Subselect) gemacht hast.
Hier jetzt meine Lösung:
// 2006-06-07 AUCH BESUCHERGRUPPE LESEN
$q = "
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
BUCHEN
SCHRITT 1: HOLE ALLE GRUPPENMITGLIEDER ZU DIESEM AUSSTELLER
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SELECT
grb2.gruppen_id grp_id
,grb2.adress_id bes_id
,kon1.id kon_id
,kon1.aussteller_id aus_id
FROM bfp_gruppen_besucher AS grb1
,bfp_gruppen_besucher AS grb2
LEFT JOIN bfp_kontakte AS kon1
ON kon1.besucher_id = grb2.adress_id
AND kon1.aussteller_id = ".$aus_id."
WHERE grb1.adress_id = ".$bes_id."
AND grb2.gruppen_id = grb1.gruppen_id
AND kon1.aussteller_id IS NOT NULL
";
$res_bu1 = mysql_query( $q, $conn_id ); zeigSqlFehler( $act, $q, $conn_id );
// KANN LEER SEIN, WENN KEIN GRUPPENMITGLIED
$where_string = '';
for ( $i=0; $i<mysql_num_rows( $res_bu1 ); $i++ )
{
$row_bu1 = mysql_fetch_array( $res_bu1 );
if ( $i > 0 ) $where_string .= ' OR ';
$where_string .= "id=".$row_bu1['kon_id'];
}
if ( !mysql_num_rows( $res_bu1 ))
{
$where_string = "id=".$row_bu1['kon_id'];
}
$q = "
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
BUCHEN FUER EINEN BESUCHER UND SEINE GRUPPENMITGLIEDER
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
UPDATE ".$db[0]['kontakte']."
SET
storno_kz = 0
,slot_nr = ".$slot_nr."
,sperr_kz = 0
,aussteller2_id = ".$frei_aus_row['id']."
WHERE ".$where_string."
";
echo "<pre>".$q."</pre>\n";
Kalle