次のSQLは、ビデオベースのオンラインコースシステムからのものです。クエリは、特定のユーザーのコースインスタンスを表示します。また、コースのどのビデオを視聴したか、まだ視聴していないかに関する情報を表示します。 watches_per_vid
については0の場合、MySQLカウント値は1を返します。
SELECT
GROUP_CONCAT(
COALESCE(watches.num_watches, 0) ORDER BY cvi.position
) AS watches_per_vid
FROM course_instances tci
LEFT JOIN videos
ON tci.node IN (
SELECT node_id
FROM _taxonomy_assocs
WHERE item_id = videos.id
)
LEFT JOIN course_indexes cvi
ON videos.vimeo_id = cvi.vimeo_id
&& cvi.course_id = tci.node
LEFT JOIN (
SELECT watches.vid_id, SUM(times) as num_watches
FROM watches
GROUP BY watches.vid_id
) watches
ON watches.vid_id = videos.id
WHERE tci.user = "vgaz1kjbc65"
&& node = "jmi_gmoan26" #<-- for example
GROUP BY tci.id
私は、ユーザーがまだ映像を見ていない場合でも、ことを発見していますが、これは、例えば、
4,4,5,2,2,2,1
の中に結果 - にエントリがないことこのユーザーとビデオのためのwatches
テーブル、それは1を生成し、0でない
ここでは、時計台です:
field | type | null | default | extra
------------------------------------------------------------------------------------------
id (primary) varchar(11) n
user_id varchar(11) n
vid_id varchar(11) n
latest_stamp timestamp n CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
times int(11) n 1
これはなぜ起こっているのか誰にでも見られますか?私はもちろん、必要に応じてより多くの構造コードを提供することができます。
に
を変更する必要がある場合、私はあなたがユーザーによって制限しているかの時計に表示されません参加者またはグループのいずれかでしたがって、ANYONEがビデオを見た場合、レコードが返されます。 – xQbert
ありがとうございます。極端なルーキーエラー。答えの下のコメントを参照してください。 – Utkanos
私たちは皆、当時/瞬間を持っています。時には目の別のペアが必要です。 – xQbert