Hallo,
folgende Tabellen habe ich:
CREATE TABLE `blacklist` (
`userID` int(11) NOT NULL default '0',
`ownerID` int(11) NOT NULL default '0'
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
INSERT INTO blacklist VALUES (1, 2);
CREATE TABLE `user` (
`id` mediumint(8) NOT NULL auto_increment,
`name` varchar(30) collate latin1_general_ci NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
INSERT INTO `user` VALUES (1, 'lars');
INSERT INTO `user` VALUES (2, 'michael');
INSERT INTO `user` VALUES (3, 'julia');
INSERT INTO `user` VALUES (4, 'anne');
Mit folgender Abfrage, möchte ich erreichen, dass alle User angezeigt werden, die User #1 nicht in Ihrer Blacklist haben; also alle ausser User#2:
SELECT u.id, u.name
FROM user u left join blacklist b on u.id = b.ownerID AND b.userID=1
WHERE b.userID is null
AND u.id != 1
Funktieren tuts auf den ersten Blick, ABER: Ist das gut gelöst? Würdet Ihr das anders machen? Bitte um Feedback...!
folgende Tabellen habe ich:
CREATE TABLE `blacklist` (
`userID` int(11) NOT NULL default '0',
`ownerID` int(11) NOT NULL default '0'
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
INSERT INTO blacklist VALUES (1, 2);
CREATE TABLE `user` (
`id` mediumint(8) NOT NULL auto_increment,
`name` varchar(30) collate latin1_general_ci NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
INSERT INTO `user` VALUES (1, 'lars');
INSERT INTO `user` VALUES (2, 'michael');
INSERT INTO `user` VALUES (3, 'julia');
INSERT INTO `user` VALUES (4, 'anne');
Mit folgender Abfrage, möchte ich erreichen, dass alle User angezeigt werden, die User #1 nicht in Ihrer Blacklist haben; also alle ausser User#2:
SELECT u.id, u.name
FROM user u left join blacklist b on u.id = b.ownerID AND b.userID=1
WHERE b.userID is null
AND u.id != 1
Funktieren tuts auf den ersten Blick, ABER: Ist das gut gelöst? Würdet Ihr das anders machen? Bitte um Feedback...!