Форум: "Базы";
Текущий архив: 2006.05.14;
Скачать: [xml.tar.bz2];
ВнизПроблема с SQL Найти похожие ветки
← →
xayam © (2006-03-18 15:27) [0]Есть такие таблицы:
COUNTRIES, GAMES, MOVES, PEOPLE, RESULTS, STATUSS,TOWNS, TYPESGAMES
GAMES.ID_P1 INTEGER Белые - ссылка на значение PEOPLE.ID_People (People содержит полную информацию об игроке, такие как, имя, фамилия, рейтинг, логин, пароль и т.д.)
GAMES.ID_P2 INTEGER Черные - ссылка на значение PEOPLE.ID_People
Собственно вопрос. Как получить в результате запроса select два столбца, содержащих имена игроков из таблицы People (People.Name), соответствующие определенной партии (строка в Games)? Короче говоря имена противников.
Моих знаний в SQL хватило только на это:SELECT NAME, SURNAME, RATING, STATUSS.DESCRIP, RESULTS.DESCRIP, TYPESGAMES.DESCRIP, GAMES.TIMEGAME, GAMES.INCR
FROM GAMES, TYPESGAMES, STATUSS, PEOPLE, RESULTS
WHERE
(
(
(GAMES.ID_P1 = PEOPLE.ID_PEOPLE)
or
(GAMES.ID_P2 = PEOPLE.ID_PEOPLE)
)
and
(GAMES.STATUS = STATUSS.ID_STATUS)
and
(GAMES.TYPEGAME = TYPESGAMES.ID_TYPESGAME)
and
(GAMES.RESULT = RESULTS.ID_RESULT)
)
Результат:
NAME SURNAME RATING DESCRIP DESCRIP1 DESCRIP2
TIMEGAME INCR
Андрей Иванов 1600 вызов блиц
5 5
Павел Сергеевич 1782 вызов блиц
5 5
sasha sash 2000 вызов блиц
5 0
Петр Андреевич 2110 вызов блиц
5 0
Павел Сергеевич 1782 вызов блиц
5 0
Марина Бородина 1900 вызов блиц
5 0
В таблице Games три строки.
← →
vovnuke © (2006-03-18 15:51) [1]псевдонимы таблиц
← →
atruhin © (2006-03-18 15:54) [2]Ну и в чем вопрос? Получил и хорошо! Что не устраивает то?
PS. Ты не мог получить такой результат, т.к. кол-во запрашиваемых полей не соответствует кол-ву показанных тобой.
← →
xayam © (2006-03-18 15:59) [3]А вроде псевдонимы, это когда в разных таблицах поля с одинаковыми именами, а у меня в одной таблице (People.Name)
← →
xayam © (2006-03-18 16:00) [4]
> atruhin © (18.03.06 15:54) [2]
Как это? Ровно 8
← →
xayam © (2006-03-18 16:05) [5]
> Что не устраивает то?
Нужно что то типа этого:
Name1 Rating1 Name2 Rating2 TIMEGAME INCR
Андрей 1600 Павел 1782 5 5 ...
← →
xayam © (2006-03-18 16:10) [6]
> PS. Ты не мог получить такой результат, т.к. кол-во запрашиваемых
> полей не соответствует кол-ву показанных тобой.
Точнее в результате одно поле содержит пустое значение (Result), поскольку игра еще не началась - это только "вызов"
← →
vovnuke © (2006-03-18 16:13) [7]select t1.p1 as t1p1, t2.p2 as t2p2
from games t1, games t2, people
where t1.p1 = people.p and t2.p2 = people.p
← →
atruhin © (2006-03-18 16:18) [8]Ты так и не ответил, что тебу нужно получить, что не устраивает в том что ты получил?
← →
xayam © (2006-03-18 16:19) [9]
> vovnuke © (18.03.06 16:13) [7]
А что такое as?
← →
xayam © (2006-03-18 16:29) [10]
> atruhin © (18.03.06 16:18) [8]
А ты все прочитал?))
← →
vovnuke © (2006-03-18 16:32) [11]я не знаю как насчет IB6.x, но вообще в SQL это то, как я хочу назвать это поле
← →
xayam © (2006-03-18 16:35) [12]
> vovnuke ©
На твой запрос - результат пустой
← →
xayam © (2006-03-18 16:43) [13]Кстати он такой же как у меня только OR на AND поменять
← →
vovnuke © (2006-03-18 16:43) [14]Извиняюсь, за ошибку (не правильно понял связи), вот так:
select games.p1, games.p2
from games, people p1, people p2
where games.p1 = p1.p and games.p2 = p2.p
← →
xayam © (2006-03-18 16:48) [15]О! Это уже ближе к истине, щас подкорректирую
← →
xayam © (2006-03-18 16:56) [16]Окончательный вариант:
SELECT p1.NAME, p1.SURNAME, p1.RATING,
p2.NAME, p2.SURNAME, p2.RATING,
STATUSS.DESCRIP, RESULTS.DESCRIP, TYPESGAMES.DESCRIP,
GAMES.TIMEGAME, GAMES.INCR
FROM GAMES, TYPESGAMES, STATUSS, PEOPLE p1, PEOPLE p2, RESULTS
WHERE
( GAMES.ID_P1 = p1.ID_PEOPLE
and
GAMES.ID_P2 = p2.ID_PEOPLE
and
GAMES.STATUS = STATUSS.ID_STATUS
and
GAMES.TYPEGAME = TYPESGAMES.ID_TYPESGAME
and
GAMES.RESULT = RESULTS.ID_RESULT
)
Спасибо vovnuke
← →
Жумабек (2006-03-23 14:14) [17]Удалено модератором
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.05.14;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.01 c