Avatar billede backupmand Nybegynder
19. december 2001 - 00:03 Der er 1 kommentar og
1 løsning

er det den måde man spørger på ?

Hej

Jeg har oprettet flg tabeller med flg kode (i Oracle db):
Hvor jeg lader productid i artist være fremmednøgle
for album.

----
CREATE TABLE artist
(productid NUMBER, artistname VARCHAR2(20), PRIMARY KEY (productid));

CREATE TABLE album
(productid NUMBER, albumname VARCHAR2(20), yearreleased NUMBER,
PRIMARY KEY (productid), FOREIGN KEY (productid) REFERENCES artist(productid));

---

Jeg har så oprettet 4 artists med 4 albums i databasen og jeg har
checket efter om alle er oprettet og det ser fint nok ud.

Jeg har oprettet to forskellige titler til samme kunstner!!

Hvad jeg så ikke forstår er, at når jeg laver flg statement:

SQL:>select * from artist,album;

kommer der multiple resultater ud, sådan:
(jeg ved godt det ikke ser så pænt ud her)


PRODUCTID ARTISTNAME            PRODUCTID ALBUMNAME            YEARRELEASED
---------- -------------------- ---------- -------------------- ------------
        1 The The                      1 Dusk                        1992
        2 Filibuster                    1 Dusk                        1992
        3 Bargain Music                1 Dusk                        1992
        4 Bargain Music                1 Dusk                        1992
        1 The The                      2 Deadly Hi Fi                1999
        2 Filibuster                    2 Deadly Hi Fi                1999
        3 Bargain Music                2 Deadly Hi Fi                1999
        4 Bargain Music                2 Deadly Hi Fi                1999
        1 The The                      3 Cook The Beans              2000
        2 Filibuster                    3 Cook The Beans              2000
        3 Bargain Music                3 Cook The Beans              2000

PRODUCTID ARTISTNAME            PRODUCTID ALBUMNAME            YEARRELEASED
---------- -------------------- ---------- -------------------- ------------
        4 Bargain Music                3 Cook The Beans              2000
        1 The The                      4 77 003                      1998
        2 Filibuster                    4 77 003                      1998
        3 Bargain Music                4 77 003                      1998
        4 Bargain Music                4 77 003                      1998

Hvad er årsagen til det? Det jeg vil er at se alle atributter fra
alle tabeller, men ikke mere end én gang. Er det den måde jeg spørger på,
eller er det en \"nøgle\"-fejl ?

thanks
Avatar billede ehf Nybegynder
19. december 2001 - 07:53 #1
Når du laver en select på flere tabeller uden join (where) clause, så joines alle rækker i alle tabeller med hinanden (kartesisk produkt).

Skriv

select * from artist, album
where artist.productid = album.productid
Avatar billede backupmand Nybegynder
19. december 2001 - 11:16 #2
Det er også rigtigt, det fandt jeg ud af idag.
Men nu får du alligevel nogle points.

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