SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 07.03.2008 16:10:45

Deus_Modus
Участник
Зарегистрирован: 07.03.2008
Сообщений: 2

UNION [Не получается создать два столбца]

Здравствуйте.
Суть запроса такова - имеются люди в состоянии он-лайн, имеется таблица с местоположением. Соответственно написаны две выборки. И эти выборки как результат будут иметь одинаковое количество строк.
Моя мысль состоит в том, чтобы противопоставить в двух колонках ИМЯ-человека-онлайн | Местоположение.
Для примера:
Михаил | Крепость
Brav     | Дом

и т.д.

Запрос я построил так:
SELECT `name`
FROM `characters`.`character`
WHERE online='1'
UNION
SELECT `location`
FROM `realm`.`zone`
WHERE zone_coordinates
IN (SELECT `zone`  FROM `characters`.`character` WHERE `online` = '1')

Он полностью исполняется, как по частям, так и полнностью, но получается, что все данные записываются в один столбик. Это неудобно и неприемлимо.

Прошу, помощи.

Отредактированно Deus_Modus (07.03.2008 16:12:41)

Неактивен

 

#2 07.03.2008 16:16:14

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: UNION [Не получается создать два столбца]

В таблице MySQL нет понятия порядка строк. Поэтому синхронизовать людей и местоположение Вы не можете, если не имеете дополнительного индекса. Если же в каждой таблице у Вас есть индекс id, который нумерует строку, то можно связать по нему через JOIN
SELECT c.name, z.location FROM characters.character c , realm.zone z WHERE c.id = z.id;

Неактивен

 

#3 07.03.2008 17:11:06

Deus_Modus
Участник
Зарегистрирован: 07.03.2008
Сообщений: 2

Re: UNION [Не получается создать два столбца]

Все равно не получается...
Структура такая
БД 1 - Characters
БД 2 - Realm

В БД Characters таблицы - Character,  в ней столбцы(нужные в этом запросе) name,zone, guid(как раз тот самый уникальный id) и online
name и guid статичны, zone это число, такое же есть в  таблице coordinates БД Realm, online принимает значение 0 или 1. Мне нужно только значение 1.
----
В БД Realm таблица - Zone в ней столбцы id, location, coordinates. id=location, т.е. все данные в этих столбцах идентичны.

Не получается сделать так - вывести два столбика
1. с пользователсями онлайн.
2. местоположение.

Как не представлялась эта выборка-
Найти всех кто он-лайн, взять значение зоны, вывести в 1-ый столбик кто он-лайн. Тут же ищем по Id зоны из первой БД название этой зоны из второй и выводим его.
Таким образом получается не
Vasya | 095
А, например
Vasya | Москва

Буду очень благодарен.

Отредактированно Deus_Modus (07.03.2008 17:11:40)

Неактивен

 

#4 07.03.2008 21:44:17

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: UNION [Не получается создать два столбца]

SELECT c.name,z.coordinates FROM Characters.Character c LEFT JOIN realms.zones z ON z.id=c.zone

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson