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?
4 svar · 418 visningar · startad av Mr T
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.
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?
marie ska inte vara med efter som EN av hennse e-mail slutar på just ".c".
select fornamn,
efternamn
from namn
where id not in
(select namn_id
from email
where email LIKE '%.c%')
Öööööö......
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.