Avatar billede stig-ole Nybegynder
10. april 2005 - 17:20 Der er 13 kommentarer og
1 løsning

hvis nr er 0 skal navn sættes til at være tom

Jeg har følgende tre tabeller (lidt forkorte version af de originale)

forhandler: {nr, navn}
Kunde: {nr, navn}
Salg: {nr, dato, kunde_nr, forhandler_nr}

Ud af disse ønsker jeg så at trække: salg.nr, salg.dato, Kunde.navn, forhandler.navn. Men hvis salg.kunde_nr = 0, så skal kunde-navn bare sætte til at være tom (på samme måde med at hvis salg.forhandler_nr = 0 skal forhandler-nr sættes til at være tom. 

Forhandler:
1, "søren"
2, "kaj"

Kunde:
1, "kurt"
2, "Jan"

Salg:
1, 1/1-2004, 1, 2
2, 1/1-2004, 0, 1
3, 1/1-2004, 1, 0

og min sql er:
SELECT Salg.Nr, Salg.Dato, Forhandler.Navn, Kunde.Navn
FROM Salg, Forhandler, Kunde
WHERE Forhandler.nr = Salg.Forhandler_nr AND Kunde.nr = Salg.Kunde_nr

Mit problem er (i mine øjne) at hvis salg.kunde_nr = 0, så er der ingen relation mellem Kunde.nr og Salg.Kunde_nr (og ligeledes med forhandler) og derfor vises salg to og tre ikke, så jeg skal vel have en måde hvorpå jeg kan sige (IF (Salg.Kunde_nr = 0, "", Kunde.Navn) "og ellers Kunde.nr = Salg.Kunde_nr"


Kan den klares på en eller anden måde?
Avatar billede mugs Novice
10. april 2005 - 17:26 #1
Se på funktionen Iif i din forespørgsel. Den returnerer en værdi hvis en betingelse er opfyldt, ellers en anden værdi.
Avatar billede terry Ekspert
10. april 2005 - 17:47 #2
SELECT Salg.nr, Salg.dato, Forhandler.navn, Kunde.Navn
FROM (Salg LEFT JOIN Kunde ON Salg.Kunde_nr = Kunde.Nr) LEFT JOIN Forhandler ON Salg.forhandler_nr = Forhandler.nr
Avatar billede terry Ekspert
10. april 2005 - 17:49 #3
By using an OUTER JOIN (Left or Right) you get to see the data on the one side of the query even thoughthere is no related records. using INNER joins which is similar to WHERE you have to have data on BOTH sides of the query to see the data.
Avatar billede terry Ekspert
11. april 2005 - 11:34 #4
some feedback would help stig-ole!
Avatar billede stig-ole Nybegynder
11. april 2005 - 15:30 #5
Undskyld ventetiden.
Det jeg har nu ser sådan ud:
SELECT Baadtype.Navn AS BaadtypeNavn, TilbudSalg.Bygge_nr, Forhandler.Navn AS Forhandler_navn, Kunde.navn AS Kunde_navn, TilbudSalg.BestiltDato, TilbudSalg.Baad_nr
FROM Baadtype, (TilbudSalg LEFT JOIN Forhandler ON TilbudSalg.Forhandler_nr = Forhandler.Forhandler_nr) LEFT JOIN Kunde ON TilbudSalg.Kunde_nr = Kunde.Kunde_nr
WHERE Baadtype.Baadtype_nr = TilbudSalg.Baadtype_nr AND TilbudSalg.KontraktLavet = 'Nej';

Til det kommer fejlen: "Joinudtrykkert understøttes ikke".

Hvad skal jeg så gøre?
Avatar billede terry Ekspert
11. april 2005 - 15:34 #6
is it possible for you to send the db so that I can see EXACTLY what you have?

eksperten@NOSPAMsanthell.dk
remove NOSPAM
Avatar billede terry Ekspert
11. april 2005 - 15:38 #7
Inthe original question there were 3 tables, in the SQL youjust gave you are selecting from 4 tables but with only two OUTER JOINS.
Avatar billede terry Ekspert
11. april 2005 - 15:40 #8
If you use the query builder then you can make the query using drag and drop!
Then make the JOINS again using drag and drop. Once you have made the joins you can then right click on the thin line (relationship) and alter the join from an INNER (default) to an OUTER
Avatar billede terry Ekspert
11. april 2005 - 15:40 #9
I have received you mail, back soon!
Avatar billede terry Ekspert
11. april 2005 - 15:46 #10
SELECT baadtype.Navn AS BaadtypeNavn, tilbudsalg.Bygge_nr, forhandler.Navn AS Forhndler_navn, kunde.Navn AS Kunde_navn, tilbudsalg.BestiltDato, tilbudsalg.Baad_nr, tilbudsalg.KontraktLavet
FROM kunde RIGHT JOIN (forhandler RIGHT JOIN (baadtype RIGHT JOIN tilbudsalg ON baadtype.Baadtype_nr = tilbudsalg.Baadtype_nr) ON forhandler.Forhandler_nr = tilbudsalg.Forhandler_nr) ON kunde.Kunde_nr = tilbudsalg.Kunde_nr
WHERE (((tilbudsalg.KontraktLavet)="Nej"));
Avatar billede terry Ekspert
11. april 2005 - 15:49 #11
you should try using the query builder, it makes things MUCH easier!
Avatar billede stig-ole Nybegynder
11. april 2005 - 15:51 #12
It worked perfect. Thanks.
Avatar billede terry Ekspert
11. april 2005 - 15:54 #13
your very welcome.
Avatar billede terry Ekspert
11. april 2005 - 15:54 #14
Oh! and thanks too :o)
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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