je les tableaux suivants:SQL se joint à la requête ne pas agir en voulait
CREATE TABLE `attendance_event_attendance` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`talk_id` varchar(200) NOT NULL,
`membersAttended_id` varchar(200) NOT NULL,
PRIMARY KEY (`id`),
KEY `attendance_event_attendance_9ace4e5a` (`talk_id`),
KEY `attendance_event_attendance_3c0dadb7` (`membersAttended_id`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=latin1;
CREATE TABLE `attendance_member` (
`name` varchar(200) NOT NULL,
`telephone_number` varchar(200) NOT NULL,
`email_address` varchar(200) NOT NULL,
`membership_type` varchar(1) NOT NULL,
`membership_number` varchar(200) NOT NULL,
PRIMARY KEY (`membership_number`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
CREATE TABLE `attendance_talk` (
`title` varchar(200) NOT NULL,
`speaker` varchar(200) NOT NULL,
`date_of_talk` date NOT NULL,
PRIMARY KEY (`title`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Je veux sélectionner tous les membres qui n'ont pas assisté aux deux derniers pourparlers. La requête que j'ai écrite ressemble à ceci:
SELECT m.name
from attendance_member as m
left outer join attendance_event_attendance as ea on (ea.membersAttended_id=m.membership_number)
join attendance_talk as t on (ea.talk_id = t.title)
where t.date_of_talk >= 2010-06-01
AND ea.membersAttended_id = null;
Est-ce correct? Ou ai-je pas compris joint correctement?
Merci à l'avance,
Dean
Merci. Je suppose que j'ai vraiment besoin de travailler sur mon SQL ... comme im faire plus de travail de base de données. – Dean
@Dean - ce qui précède est très malade - la date + HAVING COUNT (*) = 2 est horrible, il y a de meilleurs moyens, introduire une autre sous-requête pour obtenir 'les deux dernières discussions' serait bien mieux que date_d_talk> une date. –