sql-Abfrage ist wieder in die gleichen Werte doppelt
Habe ich dieses sql-query, und es soll wieder zwei Werte, die funktioniert, aber es gibt jede zurückgegebene Zeile zweimal, die sql sieht so aus,
SELECT * FROM `mailers`
LEFT JOIN `mailer_content` ON `mailers`.`id` = `mailer_content`.`mailer_id`
LEFT JOIN `mailer_images` ON `mailer_content`.`id` = `mailer_images`.`content_id`
WHERE `mailers`.`id` = 26
Die Struktur der Tabelle für die Tabellen bin ich Abfrage wie folgt Aussehen,
-- --------------------------------------------------------
--
-- Table structure for table `mailers`
--
CREATE TABLE `mailers` (
`id` int(11) NOT NULL auto_increment,
`mailer_title` varchar(150) NOT NULL,
`mailer_header` varchar(60) NOT NULL,
`mailer_type` enum('single','multi') NOT NULL,
`introduction` varchar(80) NOT NULL,
`status` enum('live','dead','draft') NOT NULL,
`flag` enum('sent','unsent') NOT NULL,
`date_mailer_created` int(11) NOT NULL,
`date_mailer_updated` int(10) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=29 ;
-- --------------------------------------------------------
--
-- Table structure for table `mailer_content`
--
CREATE TABLE `mailer_content` (
`id` int(11) NOT NULL auto_increment,
`headline` varchar(320) NOT NULL,
`content` text NOT NULL,
`mailer_id` int(11) NOT NULL,
`position` enum('left','right','centre') default NULL,
`tab_1_name` varchar(25) default NULL,
`tab_1_link` varchar(250) default NULL,
`tab_2_name` varchar(25) default NULL,
`tab_2_link` varchar(250) default NULL,
`tab_3_name` varchar(25) default NULL,
`tab_3_link` varchar(250) default NULL,
`tab_4_name` varchar(25) default NULL,
`tab_4_link` varchar(250) default NULL,
`created_at` int(10) NOT NULL,
`updated_at` int(10) NOT NULL,
PRIMARY KEY (`id`),
KEY `mailer_id` (`mailer_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=16 ;
-- --------------------------------------------------------
--
-- Table structure for table `mailer_images`
--
CREATE TABLE `mailer_images` (
`id` int(11) NOT NULL auto_increment,
`title` varchar(150) NOT NULL,
`filename` varchar(150) NOT NULL,
`mailer_id` int(11) NOT NULL,
`content_id` int(11) default NULL,
`date_created` int(10) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=49 ;
Ich bin sicher, dass es muss ein problem mit meinem sql ich weiß einfach nicht, was das problem ist
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie
SELECT DISTINCT
SQL wird nicht wieder dupplicated Zeilen, wenn gibt es einige.U verwenden können, Gruppe von smthng. Es löscht die gleichen Einträge.
aber u kann löschen nonsame Zeilen. Verwenden smthng ohne gleichen Werte in verschiedenen Zeilen in der ursprünglichen Tabelle.
versuchen, diese
SELECT * FROM
mailers
LEFT JOIN
mailer_content
AUFmailers
.id
=mailer_content
.mailer_id
LEFT JOIN
mailer_images
AUFmailer_content
.id
=mailer_images
.content_id
WO
mailers
.id
= 26 GRUPPE VONmailers
.id
Es sieht nicht wie eine SQL-isse zu mir; ich vermute, das ist eher nach unten, um die Daten in Ihren Tabellen.
Meine Vermutung ist, dass es zwei Zeilen in
mailer_content
womailers.id = 26
und dann zwei Zeilen (oder möglicherweise 1 und 3) inmailer_images
für jede dermailer_content
s.Wie viele Zeilen jeder der folgenden Abfragen zurückgeben?
Meine Vermutung ist, dass die erste liefert 1, Zeile (weil es hat einen Primärschlüssel auf
id
) und dass die zweite gibt zwei Zeilen.Dass alle in Ordnung sein, aber meine Vermutung ist, dass die folgende Abfrage gibt 4 Einträge:
Weil entweder jeder Inhalt hat, zwei Bilder ODER einen Inhalt hat ein Bild und die andere hat drei.