Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Запрос select из 3х таблиц (Павел) 12/05/2011 - 14:19:23
      Re: Запрос select из 3х таблиц (Akina) 12/05/2011 - 16:04:54
      Re: Запрос select из 3х таблиц (Павел) 12/05/2011 - 16:36:33
      Re: Запрос select из 3х таблиц (Akina) 12/05/2011 - 18:24:18
      Re: Запрос select из 3х таблиц (Павел) 12/05/2011 - 21:40:58
      Re: Запрос select из 3х таблиц (Павел) 13/05/2011 - 13:18:13

> Original message text:
> From: Павел - 12/05/2011 - 14:19:23
> Subject:Запрос select из 3х таблиц
> -----------------
> Помогите слегка запутался.
> Есть 3 таблицы history, users, contacts
> вот их состав
> history: UID,CID,TIME,IO,MESSAGE,DUPLICATE
> users: UID,NAME,INFO, GRP, ENABLED
> contacts: UID, CID, NAME, INFO, GRP, ENABLED
> Задача вывести историю и заменить UID, CID именами из соответствующих таблиц. Вот примерный запрос
>
> SELECT history.time,
> users.name as user,
> if(history.io,'=>','<=') as io,
> history.cid as contact,
> history.message
> FROM history,users
> WHERE users.uid=history.uid
>
> Из таблицы users - uid корректно заменяется на имя, а вот cid из таблицы contacts корректно заменить на contacts.name не получается. Дело еще в том, что имен у CID может быть несколько - это контакт и соответственно кто как хочет так его называет, т.е. нужно взять имя такое что в history uid был равен uid в contacts, а рядом будет корректный для этого пользователя CID.Name
>


From: Павел - 12/05/2011 - 16:36:33
Subject:Запрос select из 3х таблиц
-----------------
USE icqgate;

CREATE TABLE contacts(
uid VARCHAR(256) NOT NULL,
cid VARCHAR(256) DEFAULT NULL,
name VARCHAR(256) DEFAULT NULL,
info VARCHAR(256) DEFAULT NULL,
grp VARCHAR(256) DEFAULT NULL,
enabled TINYINT(1) DEFAULT NULL
)
ENGINE = INNODB
AVG_ROW_LENGTH = 93
CHARACTER SET latin1
COLLATE latin1_swedish_ci;

CREATE TABLE cookies(
uid VARCHAR(255) DEFAULT NULL,
bos VARCHAR(255) DEFAULT NULL,
`hash` VARCHAR(512) DEFAULT NULL
)
ENGINE = INNODB
AVG_ROW_LENGTH = 454
CHARACTER SET latin1
COLLATE latin1_swedish_ci;

CREATE TABLE filetransfer(
uid VARCHAR(256) DEFAULT NULL,
cid VARCHAR(256) DEFAULT NULL,
`time` TIMESTAMP NULL DEFAULT NULL,
io TINYINT(1) DEFAULT NULL,
filename VARCHAR(256) DEFAULT NULL,
filesize INT(11) DEFAULT NULL
)
ENGINE = INNODB
AVG_ROW_LENGTH = 105
CHARACTER SET latin1
COLLATE latin1_swedish_ci;

CREATE TABLE filters(
id INT(11) NOT NULL AUTO_INCREMENT,
expression VARCHAR(64) DEFAULT NULL,
description VARCHAR(128) DEFAULT NULL,
PRIMARY KEY (id)
)
ENGINE = INNODB
AUTO_INCREMENT = 4
AVG_ROW_LENGTH = 5461
CHARACTER SET latin1
COLLATE latin1_swedish_ci;

CREATE TABLE groups(
gid INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(256) DEFAULT NULL,
PRIMARY KEY (gid)
)
ENGINE = INNODB
AUTO_INCREMENT = 6
AVG_ROW_LENGTH = 4096
CHARACTER SET latin1
COLLATE latin1_swedish_ci;

CREATE TABLE history(
uid VARCHAR(256) DEFAULT NULL,
cid VARCHAR(256) DEFAULT NULL,
`time` TIMESTAMP NULL DEFAULT NULL,
io TINYINT(1) DEFAULT NULL,
message TEXT DEFAULT NULL,
duplicate TINYINT(1) NOT NULL
)
ENGINE = INNODB
AVG_ROW_LENGTH = 123
CHARACTER SET latin1
COLLATE latin1_swedish_ci;

CREATE TABLE lastaddr(
uid VARCHAR(24) NOT NULL,
addr VARCHAR(16) NOT NULL,
`time` DATETIME NOT NULL
)
ENGINE = INNODB
AVG_ROW_LENGTH = 79
CHARACTER SET utf8
COLLATE utf8_general_ci;

CREATE TABLE options(
opkey VARCHAR(50) DEFAULT NULL,
value TEXT DEFAULT NULL
)
ENGINE = INNODB
AVG_ROW_LENGTH = 910
CHARACTER SET latin1
COLLATE latin1_swedish_ci;

CREATE TABLE quotas_traffic(
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
uid VARCHAR(64) NOT NULL,
cid VARCHAR(64) DEFAULT NULL,
type INT(10) UNSIGNED NOT NULL DEFAULT 0,
value INT(10) UNSIGNED NOT NULL DEFAULT 0,
period INT(11) UNSIGNED NOT NULL DEFAULT 24,
PRIMARY KEY (id)
)
ENGINE = INNODB
AUTO_INCREMENT = 1
CHARACTER SET utf8
COLLATE utf8_general_ci;

CREATE TABLE schedule(
id INT(11) NOT NULL AUTO_INCREMENT,
uid VARCHAR(32) NOT NULL,
cid VARCHAR(32) NOT NULL,
day TINYINT(4) NOT NULL,
period_f TIME NOT NULL,
period_t TIME NOT NULL,
PRIMARY KEY (id)
)
ENGINE = INNODB
AUTO_INCREMENT = 1
CHARACTER SET utf8
COLLATE utf8_general_ci;

CREATE TABLE users(
uid VARCHAR(256) DEFAULT NULL,
name VARCHAR(256) DEFAULT NULL,
info VARCHAR(256) DEFAULT NULL,
grp INT(11) DEFAULT NULL,
enabled TINYINT(1) DEFAULT NULL
)
ENGINE = INNODB
AVG_ROW_LENGTH = 113
CHARACTER SET latin1
COLLATE latin1_swedish_ci;

CREATE TABLE userstat(
qid VARCHAR(512) DEFAULT NULL,
`date` DATE DEFAULT NULL,
hp INT(11) DEFAULT NULL,
br INT(11) DEFAULT NULL,
bs INT(11) DEFAULT NULL,
mr INT(11) DEFAULT NULL,
ms INT(11) DEFAULT NULL,
cr INT(11) DEFAULT NULL,
cs INT(11) DEFAULT NULL
)
ENGINE = INNODB
AVG_ROW_LENGTH = 83
CHARACTER SET latin1
COLLATE latin1_swedish_ci;


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
38436



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |