Выбор несовпадающего... угу. Вообще говоря
Цитата MySQL manual:
Параметры (опции) DISTINCT, DISTINCTROW и ALL указывают, должны ли возвращаться дублирующиеся записи. По умолчанию установлен параметр (ALL), т.е. возвращаются все встречающиеся строки. DISTINCT и DISTINCTROW являются синонимами и указывают, что дублирующиеся строки в результирующем наборе данных должны быть удалены.
|
На счет организации данных. Исходя из того, что сессия в общем-то необходима одна
, то получается, что можно сделать одну таблицу:
Код:
CREATE TABLE `users` (
`u_id` TINYINT(5) UNSIGNED NOT NULL AUTO_INCREMENT,
`s_id` CHAR(32) NOT NULL,
`s_init_time` TIMESTAMP(14) NOT NULL,
`u_name` CHAR(100) NOT NULL,
`u_mail` CHAR(50) NOT NULL,
PRIMARY KEY (`u_id`),
UNIQUE KEY `u_id` (`u_id`),
UNIQUE KEY `s_id` (`s_id`),
UNIQUE KEY `u_mail` (`u_mail`)
);
Правда уникальность некоторых полей дает неудобства при вставке новой позиции, скажем, здесь необходимо уже иметь уникальный номер сессии (UID автоинкрементный, а мыльница у нас есть из формы). Выбор типа столбца для даты начала сессии обусловлен принципом общности - мало ли когда она начата... Правда тут уже загвоздка, как по таблице определить начал пользователь сессию или нет? Стало быть уникальность сессии надо убрать и если это поле пустое, то сессия не начата, а данные в поле даты - не адекватны.