Задавайте вопросы, мы ответим
Вы не зашли.
create table chat (
id int auto_increment, login char(16) not null,
color char(12), message text not null,
date char(16) not null, recipient char(12),
primary key(id)
) CHARACTER SET=utf8
create table online(
id int auto_increment, login char(16) not null,
color_login char(12),
time int(2) not null,
sex int(1) not null,
primary key(id)
)
Есть таблички chat и online, нужно вывести содержимое chat таким образом что бы каждому пользователю(пишущему сообщение) соответствовал color_login из таблицы online, проще говоря что бы не хранить цвет его ника для каждого сообщения в табличке chat я решил просто каждый раз искать его в таблице онлайн и выводить рядом с текущим сообщением... вот так как я пробую сейчас... но получается что сообщение дублируется ровно столько раз сколько пользователей в чате, DISTINCT не помогает....
SELECT DISTINCT chat.*, online.color_login FROM chat, online WHERE chat.login IN (SELECT chat.login FROM chat)
Неактивен
FROM chat, online WHERE chat.login = online.login
Но только лучше хранить не имя человека, а id из таблички online.
Предваряя вопрос «а когда он выйдет из чата id исчезнет» — когда
он выйдет из чата, цвет тоже исчезнет вместе с id.
Неактивен
SELECT DISTINCT chat.*, online.color_login FROM chat, online WHERE chat.login = online.login
Этот вариант я пробовал.... проблема в том что сообщения пользователей которые вышли(их нет в табличке online) не видны..
почему Mysql не разрешает сделать вот так: SELECT DISTINCT chat.*, DISTINCT online.color_login
я слабо соображаю в mysql но мне очень нужно это доделать.....
Отредактированно tester5434 (15.11.2010 02:08:59)
Неактивен
Представьте, что у Вас есть класс. Вы хотите на родительском собрании объявить
результаты последней контрольной. В Вашей реализации — Вы берете дневники
учеников и начинаете зачитывать оценки. Один ученик не отдал Вам дневник —
и поэтому его оценки Вы не видите. Решение проблемы: нужен журнал, в котором
Вы бы дублировали оценки
Неактивен
можно пример в виде sql запроса?)
Неактивен
CREATE TABLE chat (ts TIMESTAMP, line VARCHAR(500), INDEX(ts));
ts — дата сообщения, в line хранится отформатированная строка для вывода. Цвет
и пользователь уже зашиты внутри строки.
Неактивен