Werte aus 2 Tabellen abfragen/Tabellen verknüpfen?!

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

  • Werte aus 2 Tabellen abfragen/Tabellen verknüpfen?!

    Hallo,

    zuerst einmal...ja, ich habe die Suchfunktion benutzt und ich weiss, dass diese Frage schon sehr oft gestellt wurde, aber da ich aus den Ergebnissen der Suche nicht wirklich schlau geworden bin, frage ich hier lieber trotzdem noch einmal nach Hilfe. Ich habe folgendes vor:

    Ich habe einen Chat geschrieben, in php...und würde nun gerne einen befehl /wc reinprogrammieren...der Befehl soll alle Räume zeigen, mit den Chatter die darin online sind und der Anzahl der Chatter...ich habe 2 Tabellen, die wie folgt aufgebaut sind:

    --> Tabelle rooms:

    Name:
    Description:
    Position:
    Geschlossen:
    moderate:

    und dazu eine Tabelle:

    -->chatusers

    nick:
    room:
    active:

    ....


    Ich würde nun gerne aus der Datenbank rooms alle Räume auslesen lassen und dazu aus der Tabelle chatusers alle user aus dem Feld "nick" die in diesem raum online sind, also alle chatuser, die active 1 sind (0 wäre nicht eingeloggt) und halt als room den room haben, der in der Tabelle rooms steht, ich hoffe ihr versteh was ich meine?! Es soll da so dargestellt werden:

    Angenommen in chatrooms steht:


    Name: Description: Position: Geschlossen: moderate:
    Test test 1 0 0
    test2 test2 2 0 0


    und in chatusers steht:

    nick: room: active:
    tester Test 0
    tester2 Test 1
    testest Test 1

    und er soll es dann so Ausgeben:

    [Test] (2 Chatter online): tester2, testest...

    [test2] (0 Chatter online):...

    Kann mir bitte jemand einen Code posten,wie ich sowas realisieren kann? Ich habe mich noch nicht so mit joins etc. befasst und komme damit nicht klar, es wäre supi lieb, wenn mir da jemand helfen könnte!

    Gruss,
    Steffen

  • #2
    versuch es erstmal selber, anhand der Beispiele aus dem MysqlManual solltest du eigentlich was hinbekommen:
    mysql> SELECT * FROM table1,table2 WHERE table1.id=table2.id;
    mysql> SELECT * FROM table1 LEFT JOIN table2 ON table1.id=table2.id;
    mysql> SELECT * FROM table1 LEFT JOIN table2 USING (id);
    mysql> SELECT * FROM table1 LEFT JOIN table2 ON table1.id=table2.id
    -> LEFT JOIN table3 ON table2.id=table3.id;
    mysql> SELECT * FROM table1 USE INDEX (key1,key2)
    -> WHERE key1=1 AND key2=2 AND key3=3;
    mysql> SELECT * FROM table1 IGNORE INDEX (key3)
    -> WHERE key1=1 AND key2=2 AND key3=3;

    handbuch -> JOINS

    Kommentar


    • #3
      Hallo MoRtAlAn,

      vielen Dank, ich werde es mal versuchen, befürchte aber das ich es so nicht hinbekommen werden, da ich es schon einmal versucht habe und es mir nicht gelingen wollte...naja mal schaun...

      Kommentar


      • #4
        wenn nicht, hier posten und sagen, wo es hängt und was er für einen fehler bringt.

        gruss

        Kommentar


        • #5
          Ich bekomme es einfach nicht hin Habe es nun so versucht:

          PHP-Code:
          $result mysql_query("SELECT chatusers.nick, rooms.name FROM chatusers, rooms WHERE active = '1' AND rooms.name = chatusers.room");
          while (
          $array mysql_fetch_array($resultMYSQL_ASSOC)) { 

          $name $array[name];
          $nick $array[nick];

          echo 
          "$name$nick<br>";


          So habe ich das ganze versucht... aber verständlicherweise zeigt er mir so nur das hier an:


          Lobby root
          Lobby Psychodave
          Lobby Nightsky
          Lobby lieber-Flo
          Testraum Firebird
          Testraum rieke

          und da habe ich natürlich 1. nur die Räume, wo wirklich jemand drin ist (und ich will ja alle Räume...) und 2. habe ich nun alles untereinander und die Räume werden immer wieder angezeigt...dabei will ich doch nur

          Lobby (4 Chatter): root Psychodave Nightsky lieber-Flo
          Testraum (2 Chatter): Firebird rieke
          Test (0 Chatter):...

          Ich bekomme es einfach net hin (

          Kommentar


          • #6
            Versuchs mal so
            PHP-Code:
            $result mysql_query("SELECT chatusers.nick, rooms.name FROM chatusers chatusers, rooms rooms WHERE active = '1' AND rooms.name = chatusers.room"); 

            Kommentar


            • #7
              Hallo,

              danke für die Antwort, aber es hat leider nicht geholfen

              Kommentar


              • #8
                Original geschrieben von BielWeb
                Versuchs mal so
                PHP-Code:
                $result mysql_query("SELECT chatusers.nick, rooms.name FROM chatusers chatusers, rooms rooms WHERE active = '1' AND rooms.name = chatusers.room"); 
                habe jetzt nicht alles exakt gelesen, aber versuche es mal mir einem LEFT JOIN wie es MoRtAlAn schon beschrieben hat.


                Code:
                  SELECT    CU.nick,
                            R.name
                
                  FROM      chatusers CU
                              LEFT OUTER JOIN rooms R ON R.name = CU.room
                
                  WHERE     CU.active = '1';

                ich gehe jetz mal davon aus, dass 'active' in der tabelle 'chatusers' stand.
                INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                Kommentar

                Lädt...
                X