Avatar billede nikolajdu Nybegynder
15. oktober 2004 - 12:10 Der er 4 kommentarer og
1 løsning

Avanceret fletning mellem tabeller

Jeg har en struktur med en 3 tabeller forskellige der i visse situationer skal samles til én omgang god info ;-)

CREATE TABLE `albums` (
  `album_id` int(11) NOT NULL auto_increment,
  `album_name` varchar(150) NOT NULL default '',
  `album_artist` int(3) NOT NULL default '0',
  `album_isbn` varchar(50) NOT NULL default '',
  `album_category` int(4) NOT NULL default '0',
  `album_info` mediumtext NOT NULL,
  `album_year` int(4) NOT NULL default '0',
  `album_created` datetime NOT NULL default '0000-00-00 00:00:00',
  `album_active` tinyint(1) NOT NULL default '0',
  `album_deleted` tinyint(1) NOT NULL default '0',
  PRIMARY KEY  (`album_id`),
  KEY `album_name` (`album_name`),
  KEY `album_artist` (`album_artist`),
  KEY `album_isbn` (`album_isbn`)
) TYPE=MyISAM AUTO_INCREMENT=4 ;


album_artist henviser så til et ID i artist tabellen og ditto med category. Her er det så at jeg når jeg sender album_id gerne vil have oplysningerne fra artist og category med.

Jeg var ude i noget alá (gider ikke skrive det hele)

    SELECT a.album_id,a.album_name,c.cat_name,t.artist_name .... FROM albums AS a, categories AS c, artists AS t
   
Hvordan får jeg optimeret min sql. Er der ikke en smartere måde at gøre det på. Er sql strukturen ok og hvis ikke - hvad er så bedre.
Avatar billede majkat Nybegynder
15. oktober 2004 - 13:34 #1
Strukturmæssigt ser det fint ud -- du skal naturligvis sørge for at have indexes på albums.album_id (foreslår PRIMARY KEY), categories.cat_id (do.), artists.artist_ID (do.)

Nåh, ja, og så skal du selvfølgelig sørge for

  WHERE a.album_artist=t.artist_id AND a.category=c.category_id
Avatar billede nikolajdu Nybegynder
15. oktober 2004 - 13:36 #2
jeg har :

  PRIMARY KEY  (`artist_id`),
  KEY `artist_name` (`artist_name`),
) TYPE=MyISAM AUTO_INCREMENT=3 ;

Er det fint og hvad med udtrækket - kan det gøres smartere?
Avatar billede majkat Nybegynder
15. oktober 2004 - 13:42 #3
Det ser godt ud; har du tilsvarende PRIMARY KEYs på de andre tabeller, som jeg foreslog?

Mht udtrækket: prøv at fyre

  EXPLAIN SELECT < hele din select her > \G

af, og vis resultatet her.
Avatar billede nikolajdu Nybegynder
15. oktober 2004 - 13:55 #4
Jeg har ikke brygget den sammen endnu. Kigger på det senere.
Avatar billede nikolajdu Nybegynder
22. oktober 2004 - 01:06 #5
fint tak.
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