【发布时间】:2018-12-12 12:57:14
【问题描述】:
作为标题,我有两个表,其中一个是具有相对 id 的产品,一个是在注册后通过内部连接看到涉及不同产品 id 的各种事件的事件之一。 在活动中我可以参与更多产品。
产品表被称为:store_locator
事件表被称为:campagne_cliente
CREATE TABLE `campagne_cliente` (
`id_campagna_cliente` int(11) NOT NULL,
`cliente_id_campagna` int(11) NOT NULL,
`impianto_id_campagna` int(11) NOT NULL,
`nome_campagna_cliente` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
其中 impianto_id_campagna 是 store_locator 表(产品)的 ID
这是我的目标。注册活动时,用户将为更多产品选择客户。
一旦完成这个过程,我当然会在事件表中进行
the id of the event
the customer's id
the product id
name of the event: optional
(see Table: campagne_cliente)
实际案例:
`id_campagna_cliente` = 12
`cliente_id_campagna` = 34
`impianto_id_campagna` = 6
`nome_campagna_cliente` = optional name
显然campagne_cliente表中包含的id号6,是指store_locator表的id号6
这是我的问题: 如果用户不小心从 store_locator 表中删除了数字 6,显然当我去查看该事件的信息页面时,我不会看到产品详细信息数字 6
如何从表 campagne_cliente 中计算 store_locator 表中不存在产品 ID 的次数
我的尝试:
SELECT COUNT(*)
FROM campagne_cliente
RIGHT OUTER JOIN store_locator
ON campagne_cliente.impianto_id_campagna = store_locator.id
WHERE store_locator.id = 0
但不好。
@Alexey
在我的项目中,除了这两个表之外,还有一个表应该涉及到, 我说的那张桌子叫:campagne
CREATE TABLE `campagne` (
`id_campagna` int(11) NOT NULL,
`data_inizio` date NOT NULL,
`data_fine` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
这个表有一个参数叫:id_campagna 因为这个表存在:因为它允许通过设置开始和结束日期来注册活动(事件),然后在用户将所有产品与客户相关联的下一步中,这些数据最终在表中:campagne_cliente
我也把store_locator表的结构放在里面
CREATE TABLE `store_locator` (
`id` bigint(20) NOT NULL,
`user_id` bigint(20) DEFAULT NULL,
`post_id` bigint(20) DEFAULT NULL,
`category_id` varchar(11) DEFAULT NULL,
`name` varchar(160) DEFAULT NULL,
`logo` varchar(255) DEFAULT NULL,
`address` varchar(160) DEFAULT NULL,
`lat` varchar(20) DEFAULT NULL,
`lng` varchar(20) DEFAULT NULL,
`url` varchar(160) DEFAULT NULL,
`description` text,
`tel` varchar(30) DEFAULT NULL,
`email` varchar(60) DEFAULT NULL,
`city` varchar(60) DEFAULT NULL,
`cap` varchar(255) NOT NULL,
`country` varchar(60) DEFAULT NULL,
`created` datetime DEFAULT NULL,
`concessionaria` varchar(255) NOT NULL,
`proprietaria` varchar(255) NOT NULL,
`cimasa` varchar(255) NOT NULL,
`inpe` varchar(255) NOT NULL,
`tipo_impianto` varchar(255) NOT NULL,
`tipologia` varchar(255) NOT NULL,
`numero_facce` varchar(255) NOT NULL,
`quartiere` varchar(255) NOT NULL,
`comune` varchar(255) NOT NULL,
`ubicazione` varchar(255) NOT NULL,
`circuito` varchar(255) NOT NULL,
`costo_quattordici` varchar(255) NOT NULL,
`costo_mese` varchar(255) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
还有一个实践例子,这是store_locator表中的value内容,可以看到,没有id 44:
INSERT INTO `store_locator` (`id`, `user_id`, `post_id`, `category_id`, `name`, `logo`, `address`, `lat`, `lng`, `url`, `description`, `tel`, `email`, `city`, `cap`, `country`, `created`, `concessionaria`, `proprietaria`, `cimasa`, `inpe`, `tipo_impianto`, `tipologia`, `numero_facce`, `quartiere`, `comune`, `ubicazione`, `circuito`, `costo_quattordici`, `costo_mese`) VALUES
(1, NULL, NULL, '3x2', NULL, NULL, 'Viale XVII Olimpiade', '41.932294', '12.472014', NULL, NULL, NULL, NULL, 'Roma', '00196', NULL, NULL, 'PUBBLI LEVEL', 'MG Marketing Agency', 'AZ830', 'Tradizionale', 'Tradizionale', 'Poster', 'bifacciale', '', 'Roma', '', '', ' € 10.000 ', ' € 20.000 '),
(2, NULL, NULL, '3x2', NULL, NULL, 'Via dei Campi Sportivi, 43', '41.937209', '12.491009', NULL, NULL, NULL, NULL, 'Roma', '00197', NULL, NULL, 'PUBBLI LEVEL', 'MG Marketing Agency', 'AZ834', 'Tradizionale', 'Tradizionale', 'Poster', 'monofacciale', 'Monte Antenne', 'Roma', '', '', ' € 5.000 ', ' € 10.000 '),
(3, NULL, NULL, '3x2', NULL, NULL, 'Viale Maresciallo Pilsudski', '41.927768', '12.475042', NULL, NULL, NULL, NULL, 'Roma', '00196', NULL, NULL, 'PUBBLI LEVEL', 'MG Marketing Agency', 'AZ837', '', 'Tradizionale', 'Poster', 'monofacciale', '', 'Roma', '', '', ' € 5.000 ', ' € 10.000 '),
(7, NULL, NULL, '3x2', NULL, NULL, 'Viale XVII Olimpiade', '41.932294', '12.472014', NULL, NULL, NULL, NULL, 'Roma', '00196', NULL, NULL, 'PUBBLI LEVEL', 'MG Marketing Agency', 'AZ830', 'Tradizionale', 'Tradizionale', 'Poster', 'bifacciale', '', 'Roma', '', '', ' € 10.000 ', ' € 20.000 '),
(8, NULL, NULL, '3x2', NULL, NULL, 'Via dei Campi Sportivi, 43', '41.937209', '12.491009', NULL, NULL, NULL, NULL, 'Roma', '00197', NULL, NULL, 'PUBBLI LEVEL', 'MG Marketing Agency', 'AZ834', 'Tradizionale', 'Tradizionale', 'Poster', 'monofacciale', 'Monte Antenne', 'Roma', '', '', ' € 5.000 ', ' € 10.000 '),
(9, NULL, NULL, '3x2', NULL, NULL, 'Viale Maresciallo Pilsudski', '41.927768', '12.475042', NULL, NULL, NULL, NULL, 'Roma', '00196', NULL, NULL, 'PUBBLI LEVEL', 'MG Marketing Agency', 'AZ837', '', 'Tradizionale', 'Poster', 'monofacciale', '', 'Roma', '', '', ' € 5.000 ', ' € 10.000 '),
(10, NULL, NULL, '3x2', NULL, NULL, 'Viale di Val Fiorita, 25', '41.839818', '12.464565', NULL, NULL, NULL, NULL, 'Roma', '00144', NULL, NULL, 'PUBBLI LEVEL', 'MG Marketing Agency', 'BB106', '', 'Tradizionale', 'Poster', 'monofacciale', '', 'Roma', '', '', ' € 5.000 ', ' € 10.000 '),
(11, NULL, NULL, '3x2', NULL, NULL, 'Via Salaria, 1075', '41.977152', '12.505168', NULL, NULL, NULL, NULL, 'Roma', '00138', NULL, NULL, 'PUBBLI LEVEL', 'MG Marketing Agency', 'BB608', '', 'Tradizionale', 'Poster', 'monofacciale', '', 'Roma', '', '', ' € 5.000 ', ' € 10.000 '),
(12, NULL, NULL, '3x2', NULL, NULL, 'Piazzale Aldo Moro', '41.902230', '12.511968', NULL, NULL, NULL, NULL, 'Roma', '00185', NULL, NULL, 'PUBBLI LEVEL', 'MG Marketing Agency', 'BB616', '', 'Tradizionale', 'Poster', 'bifacciale', '', 'Roma', '', '', ' € 10.000 ', ' € 20.000 '),
(13, NULL, NULL, '3x2', NULL, NULL, 'Via Nomentana, 696', '41.937860', '12.540871', NULL, NULL, NULL, NULL, 'Roma', '00141', NULL, NULL, 'PUBBLI LEVEL', 'MG Marketing Agency', 'BB660', '', 'Tradizionale', 'Poster', 'monofacciale', '', 'Roma', '', '', ' € 5.000 ', ' € 10.000 '),
(14, NULL, NULL, '3x2', NULL, NULL, 'Via Nomentana, 771', '41.937887', '12.544061', NULL, NULL, NULL, NULL, 'Roma', '00137', NULL, NULL, 'PUBBLI LEVEL', 'MG Marketing Agency', 'BB676', '', 'Tradizionale', 'Poster', '', '', 'Roma', '', '', ' € 5.000 ', ' € 10.000 '),
(15, NULL, NULL, '3x2', NULL, NULL, 'Piazza Ottaviano Vimercati, 37', '41.958539', '12.524797', NULL, NULL, NULL, NULL, 'Roma', '0139', NULL, NULL, 'PUBBLI LEVEL', 'MG Marketing Agency', 'BB708', '', 'Tradizionale', 'Poster', 'bifacciale', '', 'Roma', '', '', ' € 10.000 ', ' € 20.000 '),
(16, NULL, NULL, '3x2', NULL, NULL, 'Via Cavriglia, 10', '41.947661', '12.516421', NULL, NULL, NULL, NULL, 'Roma', '00139', NULL, NULL, 'PUBBLI LEVEL', 'MG Marketing Agency', 'BB708', '', 'Tradizionale', 'Poster', 'monofacciale', '', 'Roma', '', '', ' € 5.000 ', ' € 10.000 '),
(17, NULL, NULL, '3x2', NULL, NULL, 'Via Monte Rocchetta, 28', '41.947396', '12.531392', NULL, NULL, NULL, NULL, 'Roma', '00139', NULL, NULL, 'PUBBLI LEVEL', 'MG Marketing Agency', 'BB730', '', 'Tradizionale', 'Poster', 'monofacciale', '', 'Roma', '', '', ' € 5.000 ', ' € 10.000 '),
(18, NULL, NULL, '3x2', NULL, NULL, 'Via Monte Cervialto, 233', '41.956934', '12.523327', NULL, NULL, NULL, NULL, 'Roma', '00139', NULL, NULL, 'PUBBLI LEVEL', 'MG Marketing Agency', 'BB739', '', 'Tradizionale', 'Poster', 'bifacciale', '', 'Roma', '', '', ' € 10.000 ', ' € 20.000 '),
(19, NULL, NULL, '3x2', NULL, NULL, 'Viale Jonio, 185', '41.944706', '12.534701', NULL, NULL, NULL, NULL, 'Roma', '00141', NULL, NULL, 'PUBBLI LEVEL', 'MG Marketing Agency', 'BB753', '', 'Tradizionale', 'Poster', 'bifacciale', '', '', '', '', ' € 10.000 ', ' € 20.000 '),
(20, NULL, NULL, '3x2', NULL, NULL, 'Viale Jonio, 44', '41.944461', '12.543305', NULL, NULL, NULL, NULL, 'Roma', '00141', NULL, NULL, 'PUBBLI LEVEL', 'MG Marketing Agency', 'BB757', '', 'Tradizionale', 'Poster', 'bifacciale', '', 'Roma', '', '', ' € 10.000 ', ' € 20.000 '),
(21, NULL, NULL, '3x2', NULL, NULL, 'Via dei Prati Fiscali, 213', '41.946345', '12.518534', NULL, NULL, NULL, NULL, 'Roma', '00139', NULL, NULL, 'PUBBLI LEVEL', 'MG Marketing Agency', 'BB763', '', 'Tradizionale', 'Poster', 'monofacciale', '', 'Roma', '', '', ' € 5.000 ', ' € 10.000 '),
(22, NULL, NULL, '3x2', NULL, NULL, 'Via Prenestina, 1072', '41.893370', '12.611979', NULL, NULL, NULL, NULL, 'Roma', '00155', NULL, NULL, 'PUBBLI LEVEL', 'MG Marketing Agency', 'BB827', '', 'Tradizionale', 'Poster', 'monofacciale', '', '', '', '', ' € 5.000 ', ' € 10.000 '),
(23, NULL, NULL, '3x2', NULL, NULL, 'Via Prenestina, 601', '41.893968', '12.583088', NULL, NULL, NULL, NULL, 'Roma', '00155', NULL, NULL, 'PUBBLI LEVEL', 'MG Marketing Agency', 'BB829', '', 'Tradizionale', 'Poster', 'opaco', '', 'Roma', '', '', ' € 5.000 ', ' € 10.000 '),
(24, NULL, NULL, '3x2', NULL, NULL, 'Via Achille Vertunni, 26', '41.905847', '12.614205', NULL, NULL, NULL, NULL, 'Roma', '00155', NULL, NULL, 'PUBBLI LEVEL', 'MG Marketing Agency', 'BB852', '', 'Tradizionale', 'Poster', 'monofacciale', '', 'Roma', '', '', ' € 5.000 ', ' € 10.000 '),
(25, NULL, NULL, '3x2', NULL, NULL, 'Via di Tor Tre Teste, 125', '41.877248', '12.588896', NULL, NULL, NULL, NULL, 'Roma', '00169', NULL, NULL, 'PUBBLI LEVEL', 'MG Marketing Agency', 'BB869', '', 'Tradizionale', 'Poster', 'monofacciale', '', 'Roma', '', '', ' € 5.000 ', ' € 10.000 '),
(26, NULL, NULL, '3x2', NULL, NULL, 'Via Populonia, 36', '41.876673', '12.506151', NULL, NULL, NULL, NULL, 'Roma', '00183', NULL, NULL, 'PUBBLI LEVEL', 'MG Marketing Agency', 'BB969', '', 'Tradizionale', 'Poster', 'monofacciale', '', 'Roma', '', '', ' € 5.000 ', ' € 10.000 '),
(28, NULL, NULL, '3x2', NULL, NULL, 'Via Como 25', '45.5893507', '8.9111801', NULL, NULL, NULL, NULL, 'Milano', '20025', NULL, NULL, 'Adriano Cipriani', 'Adriano Cipriani', 'AC8741', 'AC8741', 'LED', 'Futuristico', '2', 'Legnano', 'Milano', 'Strada', 'Nuovo circuito', '800', '1200');
这是campagne_cliente表的内容,你可以看到id 44:
INSERT INTO `campagne_cliente` (`id_campagna_cliente`, `cliente_id_campagna`, `impianto_id_campagna`, `nome_campagna_cliente`) VALUES
(48, 3, 44, '');
这是campagne表的内容,可以看到campagne_cliente的id.id_campagna_cliente 48:
INSERT INTO `campagne` (`id_campagna`, `data_inizio`, `data_fine`) VALUES
(48, '2018-12-12', '2018-12-13');
【问题讨论】:
标签: mysql left-join inner-join outer-join