webForumDet fria alternativet

Finns det en elegantare lösning?

Databaser & SQL

2 svar · 267 visningar · startad av Hansen

Medlem sedan aug. 2000374 inlägg
Frågan#1

Hej,

Problem: Få ut alla personer som inte är med i grupp 10.

Tabeller:

+-----------+
| person    |
+-----------+
| id        | PK
| ......... |
+-----------+

+-----------+
| grupp     |
+-----------+
| id        | PK
| ......... |
+-----------+

+-----------+
| g2p       |
+-----------+
| person_id | FK -> person.id
| grupp_id  | FK -> grupp.id
+-----------+

Nuvarande lösning:


Fråga 1:

 SELECT p.id
   FROM person p,
        g2p g
  WHERE p.id = g.person_id
    AND g.grupp_id = 10

Fråga 2:

 SELECT p.id
   FROM person p
  WHERE p.id NOT IN(1,2,3,4) /* <- p.id´n från föregående fråga */

Finns det en elegantare lösning?

Medlem sedan dec. 200012 464 inlägg
#2
select * from person  left join g2p 
on person.id = g2p.person_id 
  and grupp_id = 10
 where g2p.person_id is null
Medlem sedan aug. 2000374 inlägg
#3

Helt perfekt :) Tack!

265 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)