2017-04-03 4 views
0

Ich habe viele der Lösungen für dieses Problem in anderen ähnlichen Fragen versucht, aber ich kann es nicht funktionieren.Wählen Sie Zeilen aus zwei Tabellen

Ich habe eine Tabelle in meiner Datenbank namens "Spiel" mit den Spalten: k1, k1r, k2, k2r, k3, k3r und Woche. Die Wochenspalte wird automatisch mit der Woche des Jahres eingefügt und die anderen sind Benutzereingaben aus einem Wettspiel, das ich gemacht habe.

Dann habe ich eine Tabelle namens "Übereinstimmungen" mit den Spalten: Match1, Match2, Match3, Woche. Wieder dasselbe Verfahren mit der Wochenspalte. Die anderen 3 fülle ich mit den Spielen aus, auf die wir wetten sollten.

Ich habe dann eine Abfrage:

SELECT * 
FROM game 
WHERE week = '.$week; 

$week bereits gesetzt ist als $week = Date('W');

Es gibt eine Tabelle, wo ich die Spiele in 3 Spalten schreiben und dann spiegelt die Benutzer-Wetten in den Reihen unter die Streichhölzer. Aber anstatt das PHP-Skript jedes Mal zu ändern, wenn es neue Matches gibt, möchte ich, dass es sie aus der Tabelle "Matches" holt. Auf diese Weise behalte ich auch die alten Spiele in der Datenbank.

So, nun zu meiner Frage :)

Was würde Ich mag zu tun, so etwas wie:

'SELECT * FROM game WHERE week = '.$week.' JOIN * FROM matches WHERE week = '.$week; 

aber wie Sie wahrscheinlich jetzt, die nicht funktionieren:/

Aber was soll ich dann machen?

+2

sollten Sie wie ein Vorlauf-Schlüssel in der Tabelle übereinstimmen, die die beiden Tabellen miteinander verbindet. Zum Beispiel, wenn Sie ein Spiel speichern, speichern Sie auch die Übereinstimmungen, z. B. id_match_fk – Akintunde007

Antwort

0

Ihre Abfrage so sein sollte. Sie verknüpfen Spiele grundsätzlich mit Spielen der Woche. Sie können auch mit der ID von Übereinstimmungen verknüpfen, die besser und einzigartiger ist. Aber versuchen Sie dies unter

select g.*,m.* FROM game g inner join matches m on g.week=m.week where g.week='.$week; 
+0

Ihre Antwort ist auch richtig .. Aber ich denke, ich habe einen Fehler in meiner Frage gemacht. Ich brauche es, um durch die "Spiel" -Tabelle zu laufen und alle Reihen zu nehmen, aber ich brauche nur eine Reihe, einmal aus der Matches-Tabelle. Wenn ich es so mache wie das, was du sagst, hallt es zwischen jeder Spielreihe wider? –

0

Wenn ich richtig verstanden habe, dann versuchen Sie dies:

SELECT * FROM game g JOIN matches m ON g.week = m.week WHERE g.week = ' . $week; 
+0

Wow, vielen Dank !! Kannst du mir den ON-Part erklären? Weil ich unter anderen Bedingungen habe ich gerade nicht jetzt schreiben :) –

+0

@DanielJensen mehr Informationen in der Referenz https://dev.mysql.com/doc/refman/5.7/en/join.html Durch einfach, dass " auf "Verwenden für Satzbindung zwischen Spalten an anderen Tabellen für den Beitritt seiner –

+0

Aber ich brauche es auch, um die Zeilen aus 'Spiel', wo die Spalte 'grp' ist BS auswählen. Also vor dem Beitritt war es 'SELECT * FROM Spiel WO Woche = '. $ Woche.' AND grp = 'bs''' .. Wie kann ich das schreiben? –

Verwandte Themen