Avatar billede compilos Nybegynder
15. august 2008 - 20:06 Der er 11 kommentarer og
2 løsninger

Join agtigt

Jeg har
T1.ID
T1.Deleted

Og
T2.ID
T2.Deleted
T2.T1ID

Jeg skal ha´ lavet et join, - men fatter det ikke helt.!

Hvis T1.Deleted er 1, skal jeg ikke ha´ nogle data overhovedet.

Men hvis T1.Deleted = 0
Skal jeg ha´ den post ud samtidig med alle T2.ID hvor T2.Deleted = 0

Hvis det er ikke er nogen poster i T2, - skal jeg stadig ha posten i T1. (Hvis T1.Deleted = 0).

T2.T1ID peger selvfølgelig på T1.ID

Compilos
Avatar billede arne_v Ekspert
15. august 2008 - 20:12 #1
prøv:

SELECT *
FROM t1 LEFT JOIN t2 ON t2.t1id=t1.id
WHERE t1.deleted=0 AND (t2.id IS NULL OR t2.deleted = 0)
Avatar billede compilos Nybegynder
15. august 2008 - 20:36 #2
Virker ikke, - jeg får ikke nogen post fra t1. Selv om der ikke er nogen post i t2, vil jeg gerne stadig ha´ en post fra T1
Avatar billede arne_v Ekspert
15. august 2008 - 20:40 #3
Og du huskede LEFT ?
Avatar billede compilos Nybegynder
15. august 2008 - 20:45 #4
Ja, har lige tjekket det helt igennem igen.! :-(
Avatar billede Slettet bruger
15. august 2008 - 21:24 #5
Hjælper det hvis du erstatter LEFT JOIN med LEFT OUTER JOIN?
Avatar billede compilos Nybegynder
15. august 2008 - 22:41 #6
Næ, - heller ik!

Måske er dette lidt simpler:

Jeg skal Ha´ rækken T1.ID = 7
Og hvis der findes noget i T2.T1ID = T1.ID

(fra tabel T1 vil da kun være 1 post, i T2 kan der være flere poster).
Avatar billede ldanielsen Nybegynder
16. august 2008 - 18:14 #7
t2.t1id = t1.id

- du beder om at disse skal være ens, men har de samme datatype?

Er du sikker på at t1.deleted=0, og ikke NULL?
Avatar billede ldanielsen Nybegynder
16. august 2008 - 18:16 #8
- og er det mssql, og ikke mysql?
Avatar billede kjulius Novice
19. august 2008 - 00:07 #9
arnes svar bør give det rigtige resultat hvis du har skrevet det nøjagtigt som han skriver det (inklusive paranteser).

Men du kunne evt. prøve at flytte t2.deleted kriteriet op på ON sektionen. Burde være det samme, men...

SELECT *
FROM t1 LEFT JOIN t2 ON t2.t1id=t1.id AND t2.Deleted=0
WHERE t1.Deleted=0
Avatar billede compilos Nybegynder
19. august 2008 - 22:30 #10
Hejsa, - fik løst problemet idag.

Kan ikke huske 100 %,  men mener kjulius var tættest :-)

Læg et svar alle sammen og tak for hjælpen

/Compilos
Avatar billede arne_v Ekspert
19. august 2008 - 23:00 #11
.
Avatar billede Slettet bruger
20. august 2008 - 11:06 #12
.
Avatar billede compilos Nybegynder
20. august 2008 - 22:08 #13
Tak for hjælpen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester