Avatar billede htx98i17 Professor
04. juni 2014 - 20:06 Der er 2 kommentarer og
1 løsning

UNION

Jeg har følgende to tabeller:

CREATE TABLE IF NOT EXISTS `tblspejl` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `vareid` int(11) NOT NULL DEFAULT '0',
  `position` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_danish_ci AUTO_INCREMENT=2 ;

CREATE TABLE IF NOT EXISTS `tblartikler` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `position` int(11) NOT NULL DEFAULT '0',
  `dato` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `ean` varchar(20) COLLATE utf8_danish_ci DEFAULT NULL,
  `navn` text COLLATE utf8_danish_ci NOT NULL,
  `type` text COLLATE utf8_danish_ci NOT NULL,
  `salgspris` float(11,2) NOT NULL DEFAULT '0.00',
  `listepris` float(11,2) DEFAULT '0.00',
  `kostpris` float(11,2) DEFAULT NULL,
  `varetekst` text COLLATE utf8_danish_ci NOT NULL,
  `visibility` int(11) NOT NULL DEFAULT '0',
  `totalvaegt` int(11) DEFAULT NULL,
  `lastevne` int(11) DEFAULT NULL,
  `laengde` int(11) DEFAULT NULL,
  `hoejde` int(11) DEFAULT NULL,
  `bredde` int(11) DEFAULT NULL,
  `frontpage` int(11) NOT NULL DEFAULT '0',
  `vaegt` int(11) NOT NULL DEFAULT '0',
  `producentid` int(11) DEFAULT NULL,
  `leverandoerid` int(11) DEFAULT NULL,
  `lokationid` int(11) DEFAULT NULL,
  `lagerfoeres` tinyint(1) NOT NULL DEFAULT '1',
  `kommission` tinyint(4) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `position` (`position`),
  KEY `visibility` (`visibility`),
  KEY `salgspris` (`salgspris`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_danish_ci AUTO_INCREMENT=2054 ;

Jeg vil gerne lave et udtræk fra tblartikler hvor artiklerne ligger i en bestemt varegruppe(position). Men den skal lige tjekke også om der i udtrækket skal medtages spejlprodukter fra en anden varegruppe. Derfor tabellen tblspejl.

Jeg har forsøgt med en UNION, men jeg laver det åbenbart ikke rigtigt. Der kommer ingen fejl, den finder blot ikke noget spejlprodukt.

Kan nogen gennemskue det?

        SELECT
            ta.id,
            ta.varetekst,
            ta.type,
            ta.navn,
            ta.salgspris,
            ta.listepris,
            ta.visibility,
            ta.totalvaegt,
            ta.lastevne,
            ta.bredde,
            ta.laengde,
            ta.hoejde,
            ta.frontpage,
            ta.vaegt,
            ta.lagerfoeres,
            ta.producentid,
            tst.antal as beholdning
       
        FROM
            tblartikler ta
       
        LEFT JOIN
            tblstock as tst ON
                tst.ean = ta.ean
       
        WHERE
            (ta.position = '$_GET[relation]'
            AND ta.visibility)
           
        UNION
            SELECT
                ta_s.id,
                ta_s.varetekst,
                ta_s.type,
                ta_s.navn,
                ta_s.salgspris,
                ta_s.listepris,
                ta_s.visibility,
                ta_s.totalvaegt,
                ta_s.lastevne,
                ta_s.bredde,
                ta_s.laengde,
                ta_s.hoejde,
                ta_s.frontpage,
                ta_s.vaegt,
                ta_s.lagerfoeres,
                ta_s.producentid,
                tst_s.antal as beholdning
               
            FROM
                tblartikler as ta_s
           
            LEFT JOIN
                tblstock as tst_s ON
                tst_s.ean = ta_s.ean
               
            JOIN
                tblspejl as ts ON
                    ts.vareid = ta_s.id
                AND ts.position = ta_s.position
               
            WHERE
                (ta_s.position = '$_GET[niveau1]'
                AND ta_s.visibility)
Avatar billede conz Juniormester
05. juni 2014 - 21:22 #1
Din første og sidste WHERE sætning: hvad er meningen med "AND *.visibility", når du ikke sammenligner den med noget?
Avatar billede htx98i17 Professor
05. juni 2014 - 22:07 #2
Det er bare for at den ikke hentes rækker hvor varen ikke er synlig
Avatar billede htx98i17 Professor
05. maj 2016 - 21:03 #3
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