2016-04-19 12 views
2

テーブル内のレコード:MySQLはより多くを持っているメンバーを選択*列の値* Iは、以下の表に設定している

MEMBERS 

_________________________________________________ 
|memberid | firstname | lastname | sessions| 
_________________________________________________ 
|1   | john  | doe  | 1  | 
|2   | Dave  | Smith  | 2  | 
_________________________________________________ 

BOOKINGS 
___________________________________ 
|id |memberid | date | time | group | 
___________________________________ 
|1  |1   |2016-04-19 | 08:00 | 1  | 
|2  |2   |2016-04-18 | 13:00 | 4  | 
|3  |1   |2016-04-15 | 18:00 | 3  | 
_______________________________________________ 

は私がメンバーよりも多くを持っているすべてのメンバーの姓と名を返したいのですが今週の予約テーブルの.sessionsレコード。

私は2つの日付

$ FirstDay =日付( "Y-M-D"、のstrtotime( '日曜日先週'))を生成するPHPコードを持っています。

$ LastDay =日付( "Y-m-d"、strtotime( 'sunday this week')); '$ FirstDay' と '$ LASTDAY'

間where句= bookings.date感謝任意の助けに代入

+0

おそらく私は誤解しているかもしれませんが、members.sessionがそのメンバの予約量を​​超えているかどうかを確認したいですか? – Jester

+0

私の答えを更新した、私はあなたの問題を解決する必要がありますと思います。 – Jester

答えて

1

これは、ジョブを実行する必要があります。

SELECT firstname, lastname, sessions, count(bookings.id) AS sum_bookings 
FROM members 
JOIN bookings ON bookings.memberid = members.memberid 
WHERE date BETWEEN ? AND ? 
GROUP BY members.memberid 
HAVING sessions > sum_bookings 

読むよりおよそBETWEENhere

たり、変数を持つ:

$query = "SELECT firstname, lastname, sessions, count(bookings.id) AS sum_bookings 
FROM members 
JOIN bookings ON bookings.memberid = members.memberid 
WHERE date BETWEEN '".$FirstDay."' AND '".$LastDay."' 
GROUP BY members.memberid 
HAVING sessions > sum_bookings"; 

は、このような変数を挿入するには注意してください。 SQLインジェクションに脆弱になる可能性があります。prepared statements

+0

これは、誤った解釈のために私にはうまくいきました。なぜなら、行数よりも少ないセッションを知りたかったので、セッション> sum_bookingsをセッション<= sum_bookingsに変更しました。多くのお礼ありがとうございます –

+0

aaah、ええ、私はあなたの最初の文を理解するいくつかの問題があった;)あなたのプロジェクトに幸運! – Jester

関連する問題