webForumDet fria alternativet

namn LEFT JOIN email

4 svar · 417 visningar · startad av Mr T

Mr TMedlem sedan maj 20071 147 inlägg
#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.

LarsGMedlem sedan dec. 200012 465 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?

Mr TMedlem sedan maj 20071 147 inlägg
#3

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

LarsGMedlem sedan dec. 200012 465 inlägg
#4
select fornamn, 
         efternamn 
   from namn
  where id not in
      (select namn_id
          from email
         where email LIKE '%.c%')
Mr TMedlem sedan maj 20071 147 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.

Genererad på 370 ms · cache AV · v20260730165559-full.f96bc7eb