簡體   English   中英

mysql如何聯接兩個以上的表

[英]Mysql how to join tables more than two

我的查詢有問題,

我有以下表格:

CREATE TABLE IF NOT EXISTS `klik_zona` (
  `kode_zona` int(10) unsigned NOT NULL,
  `klik` int(10) unsigned NOT NULL,
  PRIMARY KEY (`kode_zona`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `klik_zona` (`kode_zona`, `klik`) VALUES
(1, 45);

CREATE TABLE IF NOT EXISTS `tampil_zona` (
  `kode_zona` int(10) unsigned NOT NULL,
  `tanggal` date NOT NULL,
  `tampil` int(10) unsigned NOT NULL,
  PRIMARY KEY (`kode_zona`,`tanggal`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `tampil_zona` (`kode_zona`, `tanggal`, `tampil`) VALUES
(1, '2014-03-16', 100),
(1, '2014-03-17', 23);

CREATE TABLE IF NOT EXISTS `zona_iklan` (
  `kode_zona` int(10) unsigned NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`kode_zona`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;

INSERT INTO `zona_iklan` (`kode_zona`) VALUES
(1),
(2),
(3);

我有查詢:

SELECT z.kode_zona, SUM( tz.tampil ) , SUM( kz.klik )
FROM zona_iklan z
LEFT JOIN tampil_zona tz ON tz.kode_zona = z.kode_zona
LEFT JOIN klik_zona kz ON kz.kode_zona = z.kode_zona
GROUP BY z.kode_zona

但它給出了結果:

kode_zona   SUM(tz.tampil)  SUM(kz.klik)    
1                123        90
2                NULL      NULL
3                NULL      NULL

我想得到結果:

kode_zona   SUM(tz.tampil)  SUM(kz.klik)    
1                123        45
2                NULL      NULL
3                NULL      NULL

請幫助我..如何進行查詢,以便獲得希望的結果..

謝謝,

在您的例子就可以結合來自兩個記錄tampil_zona上從一個記錄zona_iklan ,其本質原因是一個創紀錄的復制。 然后,您將klik_zona一條記錄加入到兩個重復的記錄上,從而導致要避免的結果加倍。

相反,您需要在合並記錄之前對其進行匯總,以確保始終始終以一對一的方式加入記錄。

SELECT
  z.kode_zona, tz.tampil, kz.klik
FROM
  zona_iklan   AS z
LEFT JOIN
  (SELECT kode_zona, SUM(tampil) AS tampil FROM tampil_zona GROUP BY kode_zona) AS tz
    ON tz.kode_zona = z.kode_zona
LEFT JOIN
  (SELECT kode_zona, SUM(klik)   AS klik   FROM klik_zona   GROUP BY kode_zona) AS kz
    ON kz.kode_zona = z.kode_zona

嘗試刪除GROUP BY並查看結果。 您將看到有兩條記錄的kode_zona =1。這是因為tampil_zona中有兩條記錄與該ID匹配。 您可以除以count(*)但這似乎是徒勞的。 您可能想考慮如何修改聯接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM