私はこのクエリを持っている:カンマの代わりにJOINを使用するには?
INSERT INTO Votes (id_post,id_user)
SELECT ?,?
FROM Posts p, Users u
WHERE p.id_user = :id_author
AND u.id = $_SESSION['id']
AND u.active = 1
limit 1;
は、今私はJOIN
の代わり,
を使用します。しかし、これらの2つの表の間に共通の列はありません。だから、私はON
句で何を書きますか?今、私はVotes
テーブルに新しい投票を挿入する前に2つの条件をチェックする必要があり
// Posts
+----+----------+---------------+-----------+
| id | title | content | id_author |
+----+----------+---------------+-----------+
| 1 | title1 | content1 | 1234 |
| 2 | title2 | content2 | 5678 |
+----+----------+---------------+-----------+
// ^the id of post's author
// Users
+----+--------+--------+
| id | name | active |
+----+--------+--------+
| 1 | jack | 1 |
| 2 | peter | 0 |
| 3 | John | 1 |
+----+--------+--------+
// Votes
+----+---------+---------+
| id | id_post | id_user |
+----+---------+---------+
| 1 | 32 | 1234 |
| 2 | 634 | 5678 |
| 3 | 352 | 1234 |
+----+---------+---------+
// ^the id of current user
:
は、私は3つのテーブルを持っている:私は何をしようとしている
- 著者のIDは、私が渡したものと同じですか
id_author
?Posts.id_user = :id_author
(私はFKによってそれを行うことができると知っていますが、私は欲しくないです) - 現在のユーザーのアカウントは有効ですか?
Users.active = 1
サムアップ:私は人々が(active = 0
)アクティブでは誰に投票することはできせてはいけないしようとしています。たとえば、Stackoverflowがあなたを禁止すると、あなた(現在のユーザ)が禁止されているので、あなたは投稿にもう投票することができません。だから私は現在のユーザーを決定するためにクエリで$_SESSION['id']
が使用されるべきであると確信しています。
これは非常に良いです.. upvote ..しかし、不完全です(それはちょうど第2条件をチェックします)。また、この 'p.id_user =:id_author'フォームの' Posts'テーブルをチェックする必要があります。 – stack
はい。これは正しいです。今、私はあなたのクエリが良いか鉱山( 'join'対' exists')か分かりません。 – stack
良い答えです。 Upvote。 – e4c5