Avatar billede agerbeck Nybegynder
26. november 2003 - 10:45 Der er 1 kommentar og
1 løsning

Avanceret SELECT

Hej eksperter,

Jeg er igang med at lave en internet butik, og i den forbindelse har jeg 3 database tabeller:

vareinfo:
CREATE TABLE `vareinfo` (
  `VareNummer` varchar(8) NOT NULL default '0',
  `Pris` float(6,0) NOT NULL default '0',
  `Betegnelse` varchar(60) NOT NULL default '',
  PRIMARY KEY  (`VareNummer`),
  UNIQUE KEY `VareNummer` (`VareNummer`)
) TYPE=MyISAM

I denne tabel gemmes informationerne om de forskellige varer, her er det varenummer, pris og betegnelse.

tilbud:

CREATE TABLE `tilbud` (
  `VareNummer` varchar(8) NOT NULL default '',
  `StartDato` datetime NOT NULL default '0000-00-00 00:00:00',
  `SlutDato` datetime NOT NULL default '0000-00-00 00:00:00',
  `Pris` float(6,0) NOT NULL default '0',
  PRIMARY KEY  (`VareNummer`),
  UNIQUE KEY `VareNummer` (`VareNummer`)
) TYPE=MyISAM


I denne tabel kan man oprette et varenummer der skal være på tilbud, det skal være et varenummer der eksisterer i vareinfo. Desuden skal man angive en slut og startdato for tilbudet, samt en tibudspris.


varekurv:
CREATE TABLE `varekurv` (
  `IndexID` int(11) unsigned zerofill NOT NULL auto_increment,
  `KurvID` varchar(50) default NULL,
  `VareNummer` varchar(8) NOT NULL default '',
  `Antal` smallint(4) NOT NULL default '1',
  PRIMARY KEY  (`IndexID`)
) TYPE=MyISAM

Denne tabel holder styr på indkøbskurven indtil man skal betale.


Mit problem er følgende:
Hvordan får jeg lavet en SELECT der vælger alle varer fra varekurv hvor KurvID er lig et givent kurvID, hvor den desuden henter den prisen til hvert varenummer i vareinfo hvis varen ikke er på tilbud og i tilbud hvis varen er på tilbud og datoen er imellem start og slut dato?

Jeg har før brugt følgende SELECT, inden jeg ville implementere tilbudsfunktionen:

"SELECT vareinfo.Betegnelse,
vareinfo.Pris, vareinfo.VareNummer,
varekurv.Antal,
vareinfo.Pris * varekurv.Antal as TotalPris
FROM vareinfo, varekurv WHERE
vareinfo.VareNummer = varekurv.VareNummer
AND varekurv.KurvID = '"+KurvID+"'

Dette fungerede fint, men jeg kan ikke gennemskue hvordan jeg skal kunne få tilbudsfunktionen ind i den?

På forhånd tak
Christian Agerbeck
Avatar billede myplacedk Nybegynder
27. november 2003 - 23:41 #1
Jeg er ikke sikker på om det overhovedet kan lade sig gøre i MySQL, men det kan i hvert fald ikke lade sig gøre på en nem måde.
Jeg vil foreslå at du implementerer det i applikationen i stedet.

Et eller andet sted bør du have en generel funktion, som finder den nuværende pris på en given vare. Den skal du alligevel bruge, når du viser varernes priser på hjemmesiden.
Når du skal vise indholdet af indkøbskurven kan du kalde denne funktion for hvert varenummer, eller du kan kalde den når varer lægges i kurven, og gemme prisen i denne.
Avatar billede agerbeck Nybegynder
11. december 2003 - 20:23 #2
Lukker -
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