Avatar billede andersthingholm Nybegynder
02. juli 2004 - 10:33 Der er 8 kommentarer og
1 løsning

Sammenkæde 2 tabeller

Hej,

Jeg har disse to tabeller:

CREATE TABLE `cus_points` (
  `id` int(11) NOT NULL auto_increment,
  `licenseNew` varchar(255) NOT NULL default '',
  `firstname` varchar(255) NOT NULL default '',
  `lastname` varchar(255) NOT NULL default '',
  `address` varchar(255) NOT NULL default '',
  `zip` int(4) NOT NULL default '0',
  `city` varchar(255) NOT NULL default '',
  `club` varchar(255) NOT NULL default '',
  `licenseOld` varchar(255) NOT NULL default '0',
  `class` varchar(255) NOT NULL default '',
  `birthday` date default NULL,
  `promoted` date default NULL,
  `points` int(11) NOT NULL default '0',
  `formerADriver` varchar(255) NOT NULL default '',
  `a_b` varchar(255) NOT NULL default '',
  `dispensation` varchar(255) NOT NULL default '',
  PRIMARY KEY  (`id`,`id`)
) TYPE=MyISAM AUTO_INCREMENT=1736 ;

CREATE TABLE `cus_points_races` (
  `raceID` int(11) NOT NULL auto_increment,
  `licenseNew` varchar(255) NOT NULL default '',
  `raceDate` date NOT NULL default '0000-00-00',
  `club` varchar(255) NOT NULL default '',
  `participants` int(11) NOT NULL default '0',
  `placement` varchar(255) NOT NULL default '',
  `points` int(11) NOT NULL default '0',
  PRIMARY KEY  (`raceID`)
) TYPE=MyISAM AUTO_INCREMENT=1497 ;

Jeg har lavet en ODBC adgang til databasen med MS Query (Word 2000), hvor jeg skal brevflette med tabellen cus_points.

Problemet er at jeg skal bruge summen af point fra tabellen cus_points_races.points i dette udtræk - i stedet for cus_points.points.

Er det muligt med et enkelt MySQL-kald?

VH

Anders Thingholm
Avatar billede dadane Novice
02. juli 2004 - 10:44 #1
Hvordan ser dit query ud?

Du kan jo lave: SELECT SUM(points) AS sumofpoints FROM cus_points_races

Men det er garanteret ikke det du mener
Avatar billede andersthingholm Nybegynder
02. juli 2004 - 10:47 #2
Det er vel noget ala denne:

select p.licenseNew, p.firstname, count(r.points) as mypoints from cus_points p, cus_points_races r WHERE r.licenseNew = p.licenseNew GROUP BY p.licenseNew
Avatar billede andersthingholm Nybegynder
02. juli 2004 - 10:55 #3
Men den ser kun ud til at returnere dem som har noget i cus_points_races.points
Avatar billede andersthingholm Nybegynder
02. juli 2004 - 11:04 #4
Denne ser ud til at virke lidt bedre :-)

select p.licenseNew, p.firstname, sum(r.points) as mypoints from cus_points p, cus_points_races r WHERE r.licenseNew = p.licenseNew GROUP BY p.licenseNew

Men af en eller anden grund returnerer den kun 480 records - der er 1740 i cus_points og 1763 i cus_points_races. Den skal jo returnere 1740 records...
Avatar billede dadane Novice
02. juli 2004 - 13:23 #5
select p.licenseNew, p.firstname, sum(r.points) as mypoints FROM cus_points p LEFT OUTER JOIN cus_points_races r ON r.licenseNew = p.licenseNew GROUP BY p.licenseNew

Eller også er det RIGHT OUTER JOIN kan aldrig lige huske det.

Så får du også dem med som kun er i cos_points. Så hvis der ikke er to rækker i cus_points som har ens licenseNew så skulle du meget gerne få 1740 rækker.
Avatar billede andersthingholm Nybegynder
02. juli 2004 - 13:33 #6
select p.licenseNew, p.firstname, sum(r.points) as mypoints FROM cus_points p LEFT OUTER JOIN cus_points_races r ON r.licenseNew = p.licenseNew GROUP BY p.licenseNew

Denne ser ud til at virke, men ved nogle records er point NULL og andre 0. Det skal være 0 istedet for NULL
Avatar billede dadane Novice
02. juli 2004 - 13:36 #7
Dem den er null ved er dem som ikke er i cus_points_races.

Det må du tage dig af i koden.
Avatar billede andersthingholm Nybegynder
28. juni 2005 - 09:17 #8
ok, smider du et svar?
Avatar billede andersthingholm Nybegynder
28. september 2006 - 12:35 #9
Lukker igen
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