Stoney: Hilfe bei Select-gestaltung

Hallo,

Um den Hintergrund dieses Postings zu verstehen: < ?t=116292&m=743921> (Dies ist kein Doppelposting!)

(...) Ich hab mich nun für folgende DB entschieden:

gruppe person
1      1
1      2
2      3
2      4
3      5
3      6
4      7
4      8
5      7
5      9
6      2
6      9

und so sieht sie auch in wirklichkeit aus!

  
$qry = "SELECT gruppe FROM konflikt WHERE person='$usr'";  
$result = mysql_query($qry) or die(mysql_error());  
for($j=0; $j < mysql_num_rows($result); $j++)  
{  
 $gruppe = mysql_result($result, $j, 0);  
 $qry = "SELECT person FROM konflikt WHERE gruppe='$gruppe'";  
 $result_kp = mysql_query($qry) or die(mysql_error());  
 for($z=0; $z < mysql_num_rows($result_kp); $z++) $konflikt_personen[] = $gruppe = mysql_result($result_kp, $z, 0);  
}  

und das bezweckt folgendes:
zB: ein eintrag für Person mit der ID=9
zunächst bekomme ich alle gruppen in der die person dabei ist.
in unserem Beispiel also: 5,6
Dann selecte ich alle personen die in den gruppen sind und speicher sie in einem array:
7
9
2
9

Nun meine frage: Kann ich das nicht auch irgendwie mit einer SELECT-Abfrage realisieren?

Danke.

  1. korrektur:

    $qry = "SELECT gruppe FROM konflikt WHERE person='$usr'";
    $result = mysql_query($qry) or die(mysql_error());
    for($j=0; $j < mysql_num_rows($result); $j++)
    {
    $gruppe = mysql_result($result, $j, 0);
    $qry = "SELECT person FROM konflikt WHERE gruppe='$gruppe'";
    $result_kp = mysql_query($qry) or die(mysql_error());
    for($z=0; $z < mysql_num_rows($result_kp); $z++) $konflikt_personen[] = mysql_result($result_kp, $z, 0);
    }

    1. Hiho

      korrektur:

      $qry = "SELECT gruppe FROM konflikt WHERE person='$usr'";
      $result = mysql_query($qry) or die(mysql_error());
      for($j=0; $j < mysql_num_rows($result); $j++)
      {
      $gruppe = mysql_result($result, $j, 0);
      $qry = "SELECT person FROM konflikt WHERE gruppe='$gruppe'";
      $result_kp = mysql_query($qry) or die(mysql_error());
      for($z=0; $z < mysql_num_rows($result_kp); $z++) $konflikt_personen[] = mysql_result($result_kp, $z, 0);
      }

        
      muss ich mir diesen Code wirklich brainkompilieren?  
      Sag doch einfach mal in Klartext, wann ein Konflikt vorliegt. Deine Antworten im Originalthread waren diesbezüglich eher mehrdeutig.  
        
      Gruß  
      Wurf
      
      1. Hi,

        falls du nur alle Mitarbeiter suchst, die mit dem Blaumacher in derselben Gruppe stecken, reicht ein einfacher Subselect:

        select distinct person
        from meine_kleine_tabelle
        where gruppe in
        (
           select gruppe from meine_kleine_tabelle where person = '$mein_fauler_mitarbeiter'
        )
        and person <> '$mein_fauler_mitarbeiter'

        wenn du doch was anderes meinst, habe ich es einfach nicht verstanden:-)

        Gruß
        Wurf