Avatar billede netmaster Praktikant
23. maj 2004 - 18:51 Der er 10 kommentarer og
1 løsning

SQL udtryk der samler mine tabeller

Hejsa

Jeg har lavet en Database der indeholder nogle forskellige tabeller

Jeg har en tabel hvor jeg gerne vil samle trådene

#
# Table structure for table 'parts'
#

CREATE TABLE parts (
  pid int(11) unsigned NOT NULL auto_increment,
  pris float NOT NULL DEFAULT '0' ,
  partno varchar(10) NOT NULL DEFAULT '0' ,
  farveid int(11) unsigned DEFAULT '0' ,
  storrelseid int(11) unsigned DEFAULT '0' ,
  designid int(11) unsigned DEFAULT '0' ,
  mcid int(11) unsigned DEFAULT '0' ,
  resid int(11) unsigned NOT NULL DEFAULT '0' ,
  PRIMARY KEY (pid)
);

ovenstående tabel har forskellige ID'er
farveid
storrelseid
designid
resid

mcid hører til i nedenstående Tabel hvor man også lige skal have en fabrikantkoblet sammen med dette ID
#
# Table structure for table 'mctype'
#

CREATE TABLE mctype (
  mcid int(11) unsigned NOT NULL auto_increment,
  type varchar(50) NOT NULL DEFAULT '0' ,
  url varchar(255) DEFAULT '0' ,
  fabrikantid int(11) unsigned NOT NULL DEFAULT '0' ,
  PRIMARY KEY (mcid)
);

Fabrikantidet henter oplysninger i denne tabel
#
# Table structure for table 'fabrikant'
#

CREATE TABLE fabrikant (
  fid int(11) unsigned NOT NULL auto_increment,
  fabrikant varchar(50) NOT NULL DEFAULT '0' ,
  url varchar(255) DEFAULT '0' ,
  urlbeskrivelse varchar(50) DEFAULT '0' ,
  PRIMARY KEY (fid)
);


Nu kunne jeg jo frygtligt godt tænke mig at hente data fra de forskellige tabeller og koble dem sammen i en select sætning.
Således at jeg kommer ud med et udtryk hvor jeg kan hente de forskellige data fra.

Jeg har prøvet meget men det vil bare ikke lykkes.
nedenstående giver mig kun en linie. men der er 6 records i min parts tabel

SELECT parts.partno, parts.pris, farve.FarveNavn, design.DesignNavn, storrelse.StorrelseNavn, fabrikant.fabrikant, mctype.type, reservedel.overskrift
FROM farve, storrelse, design, reservedel, mctype, fabrikant
JOIN parts ON parts.farveid=farve.fid
AND parts.storrelseid=storrelse.sid
AND parts.designid=design.did
AND parts.resid=reservedel.pid
AND (parts.mcid=mctype.mcid AND mctype.fabrikantid=fabrikant.fid)
ORDER BY parts.partno

Er der nogle her som kan give mig et skub i den rigtige retning.

På forhånd tak.

/netmaster
Avatar billede arne_v Ekspert
23. maj 2004 - 19:46 #1
Mit gæt vil være at du mangler oplysninger i en af tabellerne.

Prøv med RIGHT JOIN i stedet for JOIN.
Avatar billede terry Ekspert
23. maj 2004 - 20:01 #2
if you have access to Enterprise Manager then try making a view, this will help you get the correct SQL syntax.
Avatar billede deric Nybegynder
23. maj 2004 - 20:11 #3
www.hotweb.tk - den kan faktisk bruges til lidt af hvert (:



Så bare chek den ud, der er nok noget du kan bruge -


- www.hotweb.tk
Avatar billede terry Ekspert
23. maj 2004 - 20:19 #4
deric>deric>http://www.eksperten.dk/regler.phtml
2. Regler for brug af eksperten.dk
  6. gøre reklame for andre websider, med mindre det foregår som relevant svar i et spørgsmål.


If it doesnt stop then admin will be informed!
Avatar billede netmaster Praktikant
23. maj 2004 - 20:39 #5
Arne_v Der mangler ikke oplysninger hvis du tænker på om der skulle mangle id'er som man ikke kan se eller der er uoverensstemmelser mellem tabellerne.
Jeg kan hive tingene ud af databasen vha. af en masse kald ned i databasen. Men det var ikke lige det jeg ønskede.
Jeg ville gerne at jeg bare kunne lave et kald og derefter havde jeg et dataset som jeg kunne anvende.
Avatar billede netmaster Praktikant
23. maj 2004 - 22:17 #6
Arne_v Du havde ret. Der var mangler i mine tabeller sorry. Kan jeg ikke komme til at give dig nogle point også for dit svar.
Avatar billede arne_v Ekspert
23. maj 2004 - 23:02 #7
Du kan ikke tildele point i et spørgsmål der er lukket.

Men du kan oprette et nyt spørgsmål med referenve til dette.
Avatar billede arne_v Ekspert
23. maj 2004 - 23:03 #8
Avatar billede arne_v Ekspert
23. maj 2004 - 23:05 #9
Avatar billede netmaster Praktikant
23. maj 2004 - 23:14 #10
Avatar billede netmaster Praktikant
23. maj 2004 - 23:16 #11
En sluttelig kommentar
Her er så SQL udtrykket der virker

SELECT parts.pris, parts.partno, fabrikant.fabrikant, mctype.type, mctype.url, farve.FarveNavn, storrelse.StorrelseNavn, reservedel.overskrift, reservedel.beskrivelse, design.designnavn
FROM design
INNER JOIN reservedel
INNER JOIN storrelse
INNER JOIN parts ON storrelse.sid = parts.storrelseid
INNER JOIN mctype
INNER JOIN fabrikant ON mctype.fabrikantid = fabrikant.fid ON parts.mcid = mctype.mcid ON reservedel.pid = parts.resid ON design.did = parts.designid
INNER JOIN farve ON parts.farveid = farve.fid
ORDER BY parts.partno
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