-1

2 つのテーブルがあるとします。1 つは呪文のリスト、もう 1 つはグリモリー (ユーザーが学習するために選択した、または既に学習した呪文のリスト) です。

mysql> SHOW COLUMNS FROM Grimory;
+--------------+------------+------+-----+---------+----------------+
| Field        | Type       | Null | Key | Default | Extra          |
+--------------+------------+------+-----+---------+----------------+
| id           | int(11)    | NO   | PRI | NULL    | auto_increment |
| personage_id | int(11)    | YES  | MUL | NULL    |                |
| spell_id     | int(11)    | YES  | MUL | NULL    |                |
| isLearned    | tinyint(1) | NO   |     | NULL    |                |
| isSelected   | tinyint(1) | NO   |     | NULL    |                |
+--------------+------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)

mysql> SHOW COLUMNS FROM Spell;
+-----------------+--------------+------+-----+---------+----------------+
| Field           | Type         | Null | Key | Default | Extra          |
+-----------------+--------------+------+-----+---------+----------------+
| id              | int(11)      | NO   | PRI | NULL    | auto_increment |
| name            | varchar(255) | NO   |     | NULL    |                |
| description     | longtext     | NO   |     | NULL    |                |
| chatDescription | longtext     | NO   |     | NULL    |                |
| level           | int(11)      | NO   |     | NULL    |                |
| isActive        | tinyint(1)   | NO   |     | NULL    |                |
| category_id     | int(11)      | YES  | MUL | NULL    |                |
| createdAt       | datetime     | YES  |     | NULL    |                |
+-----------------+--------------+------+-----+---------+----------------+
8 rows in set (0.00 sec)

問題。

category_id ごとにすべての呪文を含むリストを表示したいのですが、その呪文が現在のユーザー (personage_id) によって学習または選択されているかどうかを表示するすべての行について表示します。

適切なクエリを書くのを手伝ってもらえますか?

これがどのように機能するか: 私が生成する php で: 呪文のリスト | チェックボックスが選択されています | checkBoxは調査済み

isSelected チェックボックスをクリックすると、grimory のレコードに現在のユーザーとスペルが追加されます。

4

2 に答える 2

0
SELECT * FROM Spell 
INNER JOIN Grimory
ON Spell.id = Grimory.spell_id 
WHERE (Grimory.isLearned = 1 OR Grimory.isSelected = 1)
AND Spell.category_id = 'YOUR CAT ID IS HERE'
于 2013-08-11T16:58:17.803 に答える