• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Daten aus einer Datenbank abfragen

Status
Für weitere Antworten geschlossen.

Blacky

Neues Mitglied
Hey,

ich stehe vor folgendem Problem:

Aus einer Tabelle sollen Daten nur dann entnommen werden, wenn deren id in einer anderen Tabelle nicht genannt ist.
D.h.:
Wenn die Tabelle tipp_db eine Zeile enthält, die die game_id einer Zeile der games_db ist, dann sollen mir diese Daten der games_db ausgegeben werden.

Code:
games_db
id | ... |
 1 | ... |
 2 | ... |


tipp_db
id | game_id |
 1 | 1         |

--> Hier würde er mir dann die erste Zeile der games_db mit der id = 1 ausgeben.

Vielleicht habt ihr ja Ideen.
Ich habe es bisher in mit zwei While Schleifen gemacht, ABER das funktioniert so natürlich nicht.
 
Werbung:
Probier es mal mit dieser Abfrage
Code:
SELECT 
  games_db.* 
FROM 
  games_db, 
  game_id
WHERE 
  games_db.id = game_id.id

Ich weiß leider nicht ob es so jetzt funktioniert, da ich Joins so gut wie nie benutze
 
Zuletzt bearbeitet:
So, habe mich mal über JOIN informiert und ein wenig ausprobiert.
Mittlerweile bin ich so weit, dass ich mit dem Code s.u. alle Spiele mit eingegangenem Tipp anzeigen kann.
Ich möchte allerdings, dass er mir die Spiele anzeigt, die noch keinen Tipp erhalten haben.
Dies ist aber durch "A2.game_id != A1.id" nicht möglich, wie dann?
Wenn ich trotzdem benutze, sortiert er die bereits eingegangenen Tipps nicht aus und zeigt die Spiele 3-4fach an.
Also da scheint es Probleme mit der While-Schleife zu geben.

PHP:
    $sql_befehl2 = "
                   SELECT
                     A1.id id, A1.timestamp timestamp, A1.game1 game1, A1.game2 game2, A1.liga_id liga_id
                   FROM
                     cd_fb_games_db A1, cd_fb_tipp_db A2
                   WHERE
                     A2.game_id = A1.id
                   AND
                     stat = 1
                   ";
                     
    $resultat2 = mysql_query($sql_befehl2);

    while ($data2 = mysql_fetch_assoc($resultat2)) {
      extract($data2);


      // 1. Spalte: frei
      echo "<tr><td> $data2[id] </td>";

      // 2. Spalte: frei
      echo "<td>" . date("d.m.Y H:i", $data2[timestamp]) . "</td>";
  }
 
Werbung:
Also da scheint es Probleme mit der While-Schleife zu geben.

PHP:
$resultat2 = mysql_query($sql_befehl2);

while ($data2 = mysql_fetch_assoc($resultat2)) {
// Ausgabe
}
Mach es so:
PHP:
$resultat2 = mysql_query($sql_befehl2) OR die(mysql_error());
So überprüfst du deine Query. Sehrwarscheinlich liegt der Fehler meistens dort. (Bei mir wars immer so :D)


MfG, matibaski
 
Habe nochmal mit jemandem gesprochen, der sich auch näher damit befasst hat.
Der ganze Ansatz ist falsch... :oops:

Es wird nämlich eine ID genommen und überprüft, welche IDs aus dem anderen Feld nicht dazu passen.
Das sind logischerweise alle, die nicht gleich der ersten ID sind.

Ich muss aber überprüfen, ob überhaupt eine zweite ID vorhanden ist, die zur ersten passt.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben