[SQL] Check, welche Briefe noch nicht verschickt wurden

matth-ee

Mitglied
Hi Leute!

Ich hab folgendes Problem:

Ich hab eine Tabelle users (id, name) und eine zweite Tabelle letters (id, user_id, type) in der ich abgespeichert habe, welche Briefe ein User schon erhalten hat. In der Tabelle letters können auch mehrere Briefe für einen User abgespeichert sein.

Nun zu meiner Frage: Wie kann ich nun abfragen, welche User den Brief X noch nicht erhalten haben, unabhängig davon, ob sie schon einen anderen erhalten haben?

Ich würde mich über jeden Gedankenanstoß freuen - ich zerbrich mir schon seit 3 Stunden den Kopf...


lg matth--ee



Hier noch ein SQL-Dump, für alle, die nicht genau verstanden haben, wie die DB aussieht:

Code:
CREATE TABLE IF NOT EXISTS `letters` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `type` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;

INSERT INTO `letters` (`id`, `user_id`, `type`) VALUES
(1, 1, 1),
(2, 1, 2),
(3, 1, 3),
(4, 2, 1),
(5, 3, 3),
(6, 2, 2),
(7, 2, 2);


CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

INSERT INTO `users` (`id`, `name`) VALUES
(1, 'Peter'),
(2, 'Alex'),
(3, 'Chris'),
(4, 'Max');
 
Code:
SELECT
    user_ID
FROM
    letters
WHERE
    (
        SELECT COUNT(id) FROM letters WHERE id = BRIEF_ID
    ) = 0;

Eventuell nicht die beste Variante - sollte aber eigentlich funktionieren.
 

Neue Beiträge

Zurück