2012-03-23 17 views
0

Ich weiß nicht, ob es nur ein langer Tag oder was war, aber ich kann nicht herausfinden, die Abfrage, die ich hier ausführen muss. Wir haben zwei Tabellen - eine für Leads generiert und eine für Berichte. Die Lead-Tabelle enthält grundlegende Lead-Informationen, zusammen mit der Quelle (Kampagne) des Leads. Wir müssen jedoch die Anzahl der Leads kennen, die ein ACCOUNT innerhalb eines Datumsbereichs erhalten hat. Hier ist die relevante Tabellenstruktur:MySQL zählt von einer Tabelle beim Beitritt

client_leads: 
id 
source 
date 

client_reports: 
account 
campaign 
date 

Die Spalte 'Quelle' enthält dieselben Werte wie die Spalte 'Kampagne'. Also, wie würde ich folgendes erreichen:

Sagen Sie, es gibt 10 Leads in der Leads-Tabelle, jedes mit der Kampagne, die den Lead generiert. In der Berichtstabelle gibt es 10 Konten mit jeweils Hunderten von Kampagnen. Ich muss jedes Konto auflisten und wie viele Leads es in der Lead-Tabelle hat.

Ich kann einfach nicht die Logik in meinem Kopf gerade bekommen. Ich habe alles versucht, was mir einfällt und es funktioniert einfach nicht für mich. Wenn Sie weitere Erläuterungen benötigen, lassen Sie es mich wissen. Ich versuche das Problem so gut wie möglich zu beschreiben.

bearbeiten:

CREATE TABLE `client_leads` (
    `id` int(10) NOT NULL AUTO_INCREMENT, 
    `site_id` int(10) DEFAULT NULL, 
    `ip` varchar(255) DEFAULT NULL, 
    `source` varchar(255) DEFAULT NULL, 
    `kw` varchar(255) DEFAULT NULL, 
    `adgroup` varchar(255) DEFAULT NULL, 
    `time` time DEFAULT NULL, 
    `date` date DEFAULT NULL, 
    `dayweek` varchar(255) DEFAULT NULL, 
    `first_name` varchar(255) DEFAULT NULL, 
    `last_name` varchar(255) DEFAULT NULL, 
    `address` varchar(255) DEFAULT NULL, 
    `city` varchar(255) DEFAULT NULL, 
    `postal_code` char(5) DEFAULT NULL, 
    `state` char(2) DEFAULT NULL, 
    `email` varchar(255) DEFAULT NULL, 
    `preferred_phone` varchar(10) DEFAULT NULL, 
    `alternate_phone` varchar(10) DEFAULT NULL, 
    `level_of_education` varchar(255) DEFAULT NULL, 
    `program_of_interest` varchar(255) DEFAULT NULL, 
    `organic` tinyint(1) NOT NULL DEFAULT '0', 
    PRIMARY KEY (`id`), 
    KEY `site_id` (`site_id`), 
    KEY `date_indeces` (`time`,`date`,`dayweek`) USING BTREE, 
    CONSTRAINT `site_id` FOREIGN KEY (`site_id`) REFERENCES `client_sites` (`id`) ON DELETE CASCADE ON UPDATE CASCADE 
) ENGINE=InnoDB AUTO_INCREMENT=32 DEFAULT CHARSET=utf8 


CREATE TABLE `client_reports` (
    `id` int(10) NOT NULL AUTO_INCREMENT, 
    `account` varchar(255) DEFAULT NULL, 
    `friendly_name` varchar(255) DEFAULT NULL, 
    `sites_id` int(10) DEFAULT NULL, 
    `service` varchar(255) DEFAULT NULL, 
    `date` date DEFAULT NULL, 
    `campaign` varchar(255) DEFAULT NULL, 
    `adgroup` varchar(255) DEFAULT NULL, 
    `keyword` varchar(255) DEFAULT NULL, 
    `impressions` int(10) DEFAULT NULL, 
    `clicks` int(10) DEFAULT NULL, 
    `cost` float DEFAULT NULL, 
    `max_cpc` float DEFAULT NULL, 
    `avg_pos` float DEFAULT NULL, 
    PRIMARY KEY (`id`), 
    KEY `stats` (`impressions`,`clicks`,`cost`), 
    KEY `date` (`date`), 
    KEY `campaign` (`campaign`), 
    KEY `adgroup` (`adgroup`), 
    KEY `keyword` (`keyword`), 
    KEY `service` (`service`), 
    KEY `sites_id` (`sites_id`), 
    CONSTRAINT `sites_id` FOREIGN KEY (`sites_id`) REFERENCES `client_sites` (`id`) ON DELETE CASCADE ON UPDATE CASCADE 
) ENGINE=InnoDB AUTO_INCREMENT=109167 DEFAULT CHARSET=utf8 

Erneut bearbeiten: client_reports Tabelle sichtbaren Daten auf http://pastebin.com/T532W3Eq client_leads Tabellendaten sichtbar bei http://pastebin.com/9cjWEvck

Antwort

2
SELECT cr.account, cr.campaign, cr.date, COUNT(cl.id) AS number_of_leads 
FROM client_reports cr 
LEFT JOIN client_leads cl 
ON cl.source = cr.campaign 
GROUP BY cl.source 
+0

Same verrückt Ergebnisse wie ich bekommen worden sind. Eine lächerlich hohe Anzahl von Leads, genau wie die Antwort von Chris unten. – Kevin

+0

können Sie die Daten exportieren? Ich erhalte meine E-Mail-Adresse an Sie, wenn Sie möchten, dass ich einen Blick darauf werfen ... –

+0

Entschuldigung - Hatte PC-Probleme das ganze Wochenende. Ich kann eine Teilmenge der Daten exportieren, wenn Sie sie sich ansehen wollen. Das wird mich verrückt machen, weil ich weiß, dass es etwas Kleines und Einfaches ist. – Kevin

Verwandte Themen