Avatar billede clausvintherlarsen Nybegynder
09. juli 2011 - 23:21 Der er 2 kommentarer og
1 løsning

Join over 3 tabeller

Ved ikke om dette kan lade sig gøre med kun SQL Query, eller om jeg skal have lidt PHP indover.

Har tre tabeller, som ser ud som følger:

CREATE TABLE IF NOT EXISTS `cards` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `Name` varchar(255) DEFAULT NULL,
  `Edition` varchar(255) DEFAULT NULL,
  `Color` varchar(255) DEFAULT NULL,
  `Type` varchar(255) DEFAULT NULL,
  `Rarity` varchar(255) DEFAULT NULL,
  `Cost` varchar(255) DEFAULT NULL,
  `PT` varchar(255) DEFAULT NULL,
  `Text` longtext,
  `CMC` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=24597 ;


CREATE TABLE IF NOT EXISTS `haves` (
  `user` varchar(9) NOT NULL,
  `card` varchar(255) NOT NULL,
  `quantity` varchar(3) NOT NULL,
  `cardcondition` int(2) NOT NULL,
  `foil` int(1) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;


CREATE TABLE IF NOT EXISTS `editions` (
  `shortname` varchar(5) NOT NULL,
  `setname` varchar(250) NOT NULL,
  `cards` varchar(50) NOT NULL,
  `releasedate` date NOT NULL,
  PRIMARY KEY (`shortname`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Tabelen cards indeholder en masse forskellige kort som linkes til haves via cards.ID = haves.card

Tabelen editions linker til cards via editions.shortname = cards.Edition.

haves tabellen indeholder en lang række kort, flere fra samme editions.


Jeg vil gerne have alt data fra editions tabellen på de kort der står i haves, DOG, skal jeg kun have hver edition at vide 1 gang.

Er nået så langt som:
SELECT * FROM editions INNER JOIN cards ON editions.shortname = cards.Edition INNER JOIN haves ON cards.ID = haves.card

Den giver mig fint informationer om editions, men giver mig 130 returns (fordi der er 130 haves) fordelt over 3 editions.

Om muligt vil jeg blot have returneret info på disse 3.
Avatar billede wanze Nybegynder
10. juli 2011 - 04:43 #1
Vil du kun have 3 indslag fra editions trukket ud eller hvad? I såfald, kan du prøve at kigge på DISTINCT-nøgleordet.
Avatar billede clausvintherlarsen Nybegynder
10. juli 2011 - 10:39 #2
Så simpelt, perfekt!
Avatar billede wanze Nybegynder
10. juli 2011 - 17:04 #3
Svar :)
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