Topic: Pubblico - Composto da 3 Posts di 2 Utenti.
| 31 Ottobre, 2011 10:21 | #1 | ||
|---|---|---|---|
|
Vorrei estrarre l'elenco delle categorie per il quale c'è almeno un prodotto: Struttura e dati della tabella prodotti: 1CREATE TABLE IF NOT EXISTS `prodotti` ( 2 `id_prodotto` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, 3 `id_categoria` tinyint(3) unsigned NOT NULL DEFAULT '0', 4 `id_marca` tinyint(3) unsigned NOT NULL DEFAULT '0', 5 `visible` tinyint(1) unsigned NOT NULL DEFAULT '0', 6 `vetrina` tinyint(1) unsigned NOT NULL DEFAULT '0', 7 `codice_prodotto` varchar(10) COLLATE latin1_general_ci NOT NULL, 8 `prodotto` varchar(150) COLLATE latin1_general_ci NOT NULL, 9 `descrizione` text COLLATE latin1_general_ci NOT NULL, 10 `prezzo` decimal(11,2) NOT NULL DEFAULT '0.00', 11 `foto` varchar(25) COLLATE latin1_general_ci NOT NULL, 12 `note` varchar(255) COLLATE latin1_general_ci NOT NULL, 13 `data_ins` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', 14 `data_mod` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 15 PRIMARY KEY (`id_prodotto`), 16 KEY `id_categoria` (`id_categoria`), 17 KEY `id_marca` (`id_marca`), 18 KEY `visible` (`visible`), 19 KEY `vetrina` (`vetrina`) 20) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=5 ; 21 22-- 23-- Dump dei dati per la tabella `prodotti` 24-- 25 26INSERT INTO `prodotti` VALUES 27(1, 1, 1, 1, 1, 'FQV 90 XE', 'Piano cottura Ariston', 'Rex Electrolux, al fine di ridurre ulteriormente le temperature frontali e laterali, ha potenziato i vantaggi della ventilazione tangenziale.\r\n\r\nCONTROPORTA TUTTO VETRO\r\nLa nuova controporta tutto vetro è liscia e priva di interstizi per facilitarne la pulizia\r\n\r\nNUOVO SMALTO PIRO EASY TO CLEAN\r\nLe pareti interne della muffola sono rivestite con uno speciale smalto porcellanato studiato per facilitare la rimozione dello sporco ed ottenere i migliori risultati di pulizia ed igiene. E'' lo stesso smalto impiegato nei forni pirolitici.\r\n\r\n- VAPOREX\r\n- Multinove Vapore\r\n- Linea Quadro\r\n- 9 funzioni di cui 1 combinata a vapore\r\n- Classe energetica A\r\n- Programmatore elettronico inizio-fine cottura\r\n- Ventilazione tangenziale Plus di raffreddamento\r\n- Grill basculante\r\n- Triplo vetro ipotermico con cristallo interno termoriflettente\r\n- Manopole push/pull\r\n- Isolamento ”lana bianca”\r\n- Ventola decentrata\r\n- Muffola con nuovo smalto puntinato ”Clear ''n Clean”\r\n- Controporta ”tutto vetro” con vetri estraibili\r\n- 1 leccarda - 2 griglie - 1 lamiera dolci\r\n- Filtro grassi\r\n- Sicurezza bambini\r\n- Spegnimento automatico di sicurezza\r\n- Porta estraibile\r\n- Estetica inox antimpronta\r\n- Disponibile come optional Set vapore contenente teglia dietetica, sonda vapore e iniettori\r\n', 1987.45, '280920111409558329', ''' ´ „ '' ´ “ ” ´ è à ò ù ” '' £ $ % & 7 ( ) * § ° ç @', '2011-06-14 14:42:29', '2011-09-28 20:52:15'), 28(2, 1, 1, 1, 1, 'PI704G', 'Frigorifero Ariston', 'Hotpoint-Ariston, marchio di Indesit Company, crea la nuova gamma di elettrodomestici Black Line, composta da frigorifero Quadrio, lavabiancheria Aqualtis, asciugatrice, lavastoviglie e frigorifero Side by Side. Una linea all''insegna dell''esclusività: il nero è infatti sinonimo di eleganza e di raffinatezza. \r\n\r\nGrazie a questa nuova gamma, Hotpoint-Ariston dona al design più innovativo del brand il tocco esclusivo e intrigante del nero totale. Il suo stile inconfondibile, sobrio e ricercato, si arricchisce così di una personalità unica: la tradizione e la funzionalità del brand trasformano in momenti di raffinata eleganza anche i gesti più quotidiani.', 1.00, '280920111409303289', ''' ´ „ '' ´ “ ” ´ è à ò ù ” '' £ $ % & 7 ( ) * § ° ç @', '2011-06-14 15:01:25', '2011-09-28 20:52:34'), 29(3, 3, 1, 1, 1, 'PX 64 V', 'Forno elettrico multifunzione', 'Forno elettrico multifunzione,\r\ninox lucido antimpronta, 60 cm.\r\nEstetica Evoluzione\r\nClasse energetica A\r\nEAN13: 8017709131814\r\nmultifunzione 11 funzioni (termoventilato)\r\ndisplay analogico digitale\r\n10 funzioni di cottura, tra cui funzione Turbo\r\n1 funzione di pulizia Vapor Clean\r\nprogrammatore elettronico con: timer, fine cottura\r\n(spegnimento automatico), accensione automatica\r\nsegnalatore acustico di fine cottura\r\ntemperatura massima di cottura: 250°C\r\nmaxi cavità da 68 lt\r\n5 livelli di cottura\r\nsmalto “ever clean”\r\nvolta mobile estraibile\r\n2 luci alogene\r\ninterno porta tuttovetro\r\nvetro interno rimovibile per la pulizia\r\nFresh-Touch\r\ntelai laterali cromati\r\nsistema di raffreddamento tangenziale\r\nsistema automatico di spegnimento all’apertura della\r\nporta\r\nsistema di guide telescopiche (1 livello, ad estrazione\r\nparziale)\r\n1 bacinella profonda (40 mm), 1 bacinella\r\ntradizionale (20 mm) con inserto griglia, 1 griglia', 1.00, '280920111409472881', ''' ´ „ '' ´ “ ” ´ è à ò ù ” '' £ $ % & 7 ( ) * § ° ç @', '2011-06-14 15:12:30', '2011-09-28 20:52:40'), 30(4, 2, 2, 1, 1, 'PX 75 V', 'Piano cottura Smeg', 'Progettati e prodotti all''interno dell''azienda per garantire i migliori risultati. Il rendimento complessivo è aumentato del 25%, migliorando ulteriormente le prestazioni di cottura e riducendo i consumi energetici\r\n\r\n- 5 fuochi gas\r\n- Linea Soft\r\n- Larghezza 70 cm\r\n- Bruciatori Fiamma Pura\r\n- 1 bruciatore Superpower\r\n- Griglie speciali in estetica nera e coprispartifiamma smaltati neri\r\n- Accensione integrata nella manopola\r\n- Sicurezza Sicurgas\r\n- Estetica inox\r\n- Kit griglie in ghisa e coprispartifiamma nero ghisa GHISA 70-S come optional\r\n- Coperchio in vetro temprato fumé CONER 70 FF come optional', 134.87, '280920111509107205', ''' ´ „ '' ´ “ ” ´ è à ò ù ” '' £ $ % & 7 ( ) * § ° ç @', '2011-09-21 15:34:42', '2011-09-28 20:52:07'); Struttura e dati della tabella categorie: 1CREATE TABLE `categorie_prodotti` ( 2 `id_categoria` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, 3 `categoria` varchar(80) COLLATE latin1_general_ci NOT NULL DEFAULT '', 4 `descrizione` varchar(250) COLLATE latin1_general_ci NOT NULL, 5 PRIMARY KEY (`id_categoria`) 6) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=9 ; 7 8-- 9-- Dump dei dati per la tabella `categorie_prodotti` 10-- 11 12INSERT INTO `categorie_prodotti` VALUES 13(1, 'Piani cottura', 'Ampia gamma di piani cottura tra le migliori marche, differenziati per dimensioni, funzioni, classe di efficienza e design.'), 14(2, 'Frigoriferi e congelatori', 'I migliori modelli di frigoriferi e congelatori disponibili sul mercato differenti per efficienza, risparmio energetico, optional e rifiniture.'), 15(3, 'Forni', 'Vasta scelta di forni da incasso e in libera installazione selezionati in base ad elevati criteri di qualita'', efficienza e design.'), 16(4, 'Lavastoviglie', 'Ampia selezione di lavastoviglie dalle caratteristiche tecniche avanzate, dall’elevata efficienza e dalle ricercate rifiniture.'), 17(5, 'Lavatrici', 'Le migliori offerte di lavatrici selezionate tra le marche più prestigiose differenziate per classe energetica, consumi e capacità.'), 18(6, 'Cappe', 'Vasta gamma di cappe aspiranti e filtranti in grado di soddisfare i più elevati standard di efficacia, silenziosità ed estetica.'), 19(7, 'Lavelli', 'I migliori cataloghi di lavelli disponibili sul mercato selezionati in base ad elevati criteri di resistenza, praticità, igiene e design.'), 20(8, 'Accessori', 'Oggettistica e complementi d’arredo per la cucina selezionati tra le migliori marche del settore.'); Struttura e dati della tabella marche: 1CREATE TABLE IF NOT EXISTS `marche` ( 2 `id_marca` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, 3 `marca` varchar(80) NOT NULL, 4 PRIMARY KEY (`id_marca`) 5) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ; 6 7-- 8-- Dump dei dati per la tabella `marche` 9-- 10 11INSERT INTO `marche` VALUES 12(1, 'smeg'), 13(2, 'Rex'), 14(3, 'Aeg'), 15(4, 'Ariston'); Ho risolto cosi: 1SELECT DISTINCT 2 `cat`.`id_categoria` 3, `cat`.`categoria` 4FROM `prodotti` AS `pr` 5LEFT JOIN `categorie_prodotti` AS `cat` ON `pr`.`id_categoria` = `cat`.`id_categoria` 6ORDER BY `cat`.`categoria` ASC; 7 8/* 9+--------------+---------------------------+ 10| id_categoria | categoria | 11+--------------+---------------------------+ 12| 3 | Forni | 13| 2 | Frigoriferi e congelatori | 14| 1 | Piani cottura | 15+--------------+---------------------------+ 16*/ se volessi fare la stessa cosa anche sulla tabella marche, è possibile farlo in una query unica? Grazie:)
Ultima modifica 31 Ottobre, 2011 10:33 di DebUsr |
|||
| 01 Novembre, 2011 07:59 | #2 | ||
|---|---|---|---|
|
Ciao DebUsr, cosa intendi di preciso per "stessa cosa"? Vuoi un elenco che visualizzi tutte le categorie e le marche che hanno almeno un prodotto? O deve esserci qualche altro vincolo? |
|||
| 15 Novembre, 2011 10:56 | #3 | ||
|---|---|---|---|
|
Ti ringrazio per l'interessamento.. Ho risolto con 2 query 1/*n prodotti per categoria*/ 2SELECT DISTINCT 3 `cat`.`id_categoria` 4, `cat`.`categoria` 5, COUNT(`pr`.`id_categoria`) AS `npr_cat` 6FROM `categorie_prodotti` AS `cat` 7LEFT JOIN `prodotti` AS `pr` ON `cat`.`id_categoria` = `pr`.`id_categoria` 8GROUP BY `cat`.`id_categoria` 9ORDER BY `cat`.`categoria` ASC; 10/* 11+--------------+---------------------------+---------+ 12| id_categoria | categoria | npr_cat | 13+--------------+---------------------------+---------+ 14| 8 | Accessori | 0 | 15| 6 | Cappe | 0 | 16| 3 | Forni | 1 | 17| 2 | Frigoriferi e congelatori | 2 | 18| 4 | Lavastoviglie | 0 | 19| 5 | Lavatrici | 0 | 20| 7 | Lavelli | 0 | 21| 1 | Piani cottura | 2 | 22+--------------+---------------------------+---------+ 23*/ 24 25/*n marche per categoria specificata*/ 26SELECT DISTINCT 27 `mar`.`id_marca` 28, `mar`.`marca` 29, COUNT(`pr`.`id_marca`) AS `npr_mar` 30FROM `marche` AS `mar` 31LEFT JOIN `prodotti` AS `pr` ON `mar`.`id_marca` = `pr`.`id_marca` 32WHERE `pr`.`id_categoria` = 1 33GROUP BY `mar`.`id_marca` 34ORDER BY `mar`.`marca` ASC; 35/* 36+----------+---------+---------+ 37| id_marca | marca | npr_mar | 38+----------+---------+---------+ 39| 3 | Aeg | 1 | 40| 4 | Ariston | 1 | 41+----------+---------+---------+ 42*/ Non so come ottenere in un unica query Ciao e grazie
Ultima modifica 15 Novembre, 2011 11:02 di DebUsr |
|||
Condividi su:
Loggati o Registrati per replicare