webForumDet fria alternativet

namn LEFT JOIN email

Databaser & SQL

4 svar · 418 visningar · startad av Mr T

Medlem sedan maj 20071 061 inlägg
Frågan#1

Har 2 tabeller som jag vill söka i och som är "sammansatta".

namn
id
fornamn
efternamn

email
id
namn_id
email

I namn finns följande poster

+----+---------+-----------+
| id | fornamn | efternamn |
+----+---------+-----------+
| 01 |  Albert |  Einstein |
| 02 | Charles |    Darwin |
| 03 |   Marie |     Curie |
+----+---------+-----------+

I email finn följande poster

+----+---------+---------+
| id | namn_id |  email  |
+----+---------+---------+
| 01 |      01 |   E@m.c |
| 02 |      03 |  M@ri.e |
| 03 |      03 | C@uri.c |
+----+---------+---------+

SQL-Frågan:
För att få fram för- och efter-namn i sökresultatet.

SELECT namn.fornamn, namn.efternamn FROM namn

För att bygga ihop dessa 2 använder jag LEFT JOIN för att få med ALLA namn oavsett om någon missar en e-mail adress (Det är väll rätt tänkt?)

LEFT JOIN email ON email.namn_id=namn.id

Själva frågan ställer jag som såhär

WHERE email.email NOT LIKE '%.c%'

och för att inte få dubbla namn i resultatet

GROUP BY namn.id

och sortera på efternamn och sedan förnamn

ORDER BY efternamn, fornamn

Nu anser jag att Charles Darwin skulle dyka upp som resultat, men eftersom hans email är NULL (han saknar ju e-mail) så kommer inte hans resulet heller fram.
Vad gör jag för fel när jag kombinerar tabellerna ?

Tacksam hjälp.

Medlem sedan dec. 200012 464 inlägg
#2
select fornamn, 
         efternamn 
   from namn
  where not exists
      (select *
          from email
         where email NOT LIKE '%.c%'
             and email.namn_id=namn.id)

Vill du ha med marie i resultatet?

Medlem sedan maj 20071 061 inlägg
#3

marie ska inte vara med efter som EN av hennse e-mail slutar på just ".c".

Medlem sedan dec. 200012 464 inlägg
#4
select fornamn, 
         efternamn 
   from namn
  where id not in
      (select namn_id
          from email
         where email LIKE '%.c%')
Medlem sedan maj 20071 061 inlägg
#5

Öööööö......

Får samma resultat från båda 2. Dom som det inte har någon e-mail kommer med i båda resultaten ju. Precis som det ska vara.

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