-1

私は3つのテーブルを持っています:phones、phones_state、state

電話:

+------------------+
| phone_id | model |
+----------+-------+
| 1        | mot   |
| 2        | sam   |
+----------+-------+

電話の状態:

+---------------------+
| phone_id | state_id |
+----------+----------+
| 2        | 1        |
| 2        | 3        |
| 2        | 5        |
| 1        | 1        |
+----------+----------+

州:

+------------------+
| state_id | name  |
+----------+-------+
| 1        | rec   |
| 2        | notre |
| 3        | res   |
| 4        | wait  |
| 5        | back  |
+----------+-------+

状態 1 で状態 5 ではないすべての電話を取得したいのですが、mysql クエリでこれを行うにはどうすればよいですか?

4

1 に答える 1

2
select p.phone_id
from phones p
inner join phones_state ps on ps.phone_id = p.phone_id
group by p.phone_id
having sum(ps.state_id = 1) >= 1 and sum(ps.state_id = 5) = 0 
于 2012-10-14T20:56:01.970 に答える