Witam serdecznie
Jestem właśnie w trakcie tworzenia sklepu internetowego i mam pewien problem.
Baza danych składa się z następujących tabeli:
--
-- Struktura tabeli dla 'cechy'
--
CREATE TABLE cechy (
id smallint(6) UNSIGNED NOT NULL AUTO_INCREMENT,
id_kategorii smallint(4) NOT NULL DEFAULT '0',
nazwa varchar(50) NOT NULL DEFAULT '',
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=latin2;
-- --------------------------------------------------------
--
-- Struktura tabeli dla 'cechy_dane'
--
CREATE TABLE cechy_dane (
id_produktu smallint(6) NOT NULL DEFAULT '0',
id_cechy smallint(6) NOT NULL DEFAULT '0',
wartosc varchar(255) NOT NULL DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin2;
-- --------------------------------------------------------
--
-- Struktura tabeli dla 'kategorie'
--
CREATE TABLE kategorie (
id smallint(4) UNSIGNED NOT NULL AUTO_INCREMENT,
nad_id smallint(4) NOT NULL DEFAULT '0',
pozycja smallint(3) NOT NULL DEFAULT '0',
nazwa varchar(50) NOT NULL DEFAULT '',
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=latin2;
-- --------------------------------------------------------
--
-- Struktura tabeli dla 'producenci'
--
CREATE TABLE producenci (
id smallint(4) UNSIGNED NOT NULL AUTO_INCREMENT,
nazwa varchar(50) NOT NULL DEFAULT '',
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=latin2;
-- --------------------------------------------------------
--
-- Struktura tabeli dla 'produkty'
--
CREATE TABLE produkty (
id smallint(6) UNSIGNED NOT NULL AUTO_INCREMENT,
id_kategorii smallint(4) NOT NULL DEFAULT '0',
id_producenta smallint(4) NOT NULL DEFAULT '0',
nazwa varchar(50) NOT NULL DEFAULT '',
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=latin2;
I teraz tak chciałbym wyświetlić takie rekordy z tabeli produkty których 'Pojemność dysku twardego' wynosi '80gb'.
Na razie mam następujące zapytanie:
SELECT p.*,pro.nazwa AS nazwa_producenta,kat.nazwa AS nazwa_kategorii
FROM produkty p
JOIN kategorie kat ON (p.id_kategorii = kat.id)
JOIN producenci pro ON (p.id_producenta = pro.id)
JOIN cechy c1 ON (kat.id = c1.id_kategorii)
JOIN cechy_dane c2 ON (p.id = c2.id_produktu AND c1.id = c2.id_cechy)
Jak dodać instrukcje warunkową do tego zapytania, tak aby wybrać tylko rekordy, których dla przykładu 'Pojemność dysku twardego' wynosi '80gb'.
Poniżej daje zrzut bazy żebyście widzieli co aktualnie w niej jest:
--
-- Zrzut danych tabeli `cechy`
--
INSERT INTO `cechy` VALUES (1, 1, 'Pojemność dysku twardego');
INSERT INTO `cechy` VALUES (2, 1, 'Przekątna ekranu');
--
-- Zrzut danych tabeli `cechy_dane`
--
INSERT INTO `cechy_dane` VALUES (1, 1, '80 gb');
INSERT INTO `cechy_dane` VALUES (1, 2, '14.1"');
--
-- Zrzut danych tabeli `kategorie`
--
INSERT INTO `kategorie` VALUES (1, 0, 0, 'Laptopy');
--
-- Zrzut danych tabeli `producenci`
--
INSERT INTO `producenci` VALUES (1, 'Toshiba');
--
-- Zrzut danych tabeli `produkty`
--
INSERT INTO `produkty` VALUES (1, 1, 1, 'HP Compaq nx6110');
Czekam na propozycje i pomoc.