2017-04-03 24 views
0

他の同様の質問でこの問題の解決策を試しましたが、動作させることはできません。2つのテーブルから行を選択

私のデータベースには、「k1」、「k1r」、「k2」、「k2r」、「k3」、「k3r」、「week」という列のテーブルがあります。週の列は自動的に年の週と共に挿入され、他のものは私が作成した賭けのゲームからのユーザー入力です。

次に、「マッチ」と呼ばれるテーブルがあります:match1、match2、match3、week。再び、週の列と同じ手順。他の3つは私達が賭けなければならない試合で記入する。

私は、クエリを持っている:それは私が3列に一致するものを書くのテーブルを出力して、下の行では、ユーザーの賭けをエコー

$week = Date('W');として

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

$weekがすでに設定されていますマッチしかし、新しい試合があるたびにphpスクリプトを変更する代わりに、私はテーブルの試合からそれらを取ることを望みます。そうしたやり方で、古いマッチもデータベースに残しておきます。

だから、今、私の質問:)に

私は何をしたいのようなものです:

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

は、おそらく今、あなたのように、それが動作しません:/

しかし、私はどうしたらいいですか?

+2

2つのテーブルをリンクするマッチテーブルのforeginキーのようにしてください。たとえば、ゲームを保存するときにも一致を保存すると、たとえばid_match_fk – Akintunde007

答えて

0

クエリは次のようにする必要があります。 基本的には、週を使用して試合とゲームをリンクします。あなたはより良い、よりユニークな一致のIDを使用してリンクすることもできます。しかし、これを試してみてください

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

あなたの答えは正しいです..しかし、私は私の質問で間違いをしたと思います。 'game'テーブルをループしてすべての行を取得する必要がありますが、 'matches'テーブルから1回だけ行が必要です。あなたが言うことのように私がそれをするとき、それはすべての 'ゲーム'行の間にマッチ行をエコーし​​ますか? –

0

私は右の理解場合は、これを試してみてください。

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

うわー、ありがとう! 「ON」の部分を私に説明できますか?私は他の条件を持っているので、私は今書いていません。 –

+0

@DanielJensenもっと参考になる情報https://dev.mysql.com/doc/refman/5.7/en/join.html シンプルに、他のテーブルのカラム間のセットバインディングを使用して –

+0

に参加していますが、 'game'から 'grp'カラムがbsのローを選択する必要があります。実際に参加する前は、 '' SELECT * FROM game where week = '。$ week。' 'でした。 AND grp = 'bs''' ..どうすればそれを書くことができますか? –

関連する問題