Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: запрос из 2 таблиц, про игры
 
 автор: mimik   (22.01.2011 в 19:28)   письмо автору
 
 

tables:
games: id, team1_id, team2_id
teams: id, name

как правильно выбрать все игры, сейчас делаю так:

SELECT t1.name team1, t2.name team2 
   FROM games g
   LEFT JOIN teams t1 ON g.team1_id=t1.id
   LEFT JOIN teams t2 ON g.team2_id=t2.id

  Ответить  
 
 автор: Trianon   (22.01.2011 в 19:33)   письмо автору
 
   для: mimik   (22.01.2011 в 19:28)
 

>tables:
>games: id, team1_id, team2_id
>teams: id, name
>
>как правильно выбрать все игры,
Если игры это games, то очевидно так: SELECT * FROM games

сейчас делаю так:
>
>SELECT t1.name team1, t2.name team2
> FROM games g
> LEFT JOIN teams t1 ON g.team1_id=t1.id
> LEFT JOIN teams t2 ON g.team2_id=t2.id
>

логично. Какие-то проблемы возникают?

  Ответить  
 
 автор: mimik   (22.01.2011 в 19:38)   письмо автору
 
   для: Trianon   (22.01.2011 в 19:33)
 

нет, все правельно выводит,
просто я не уверен, делаются там лишнее операции или нет

  Ответить  
 
 автор: Trianon   (22.01.2011 в 19:41)   письмо автору
 
   для: mimik   (22.01.2011 в 19:38)
 

всё достаточно аккуратно.
Если кроме имен команд ничего не требуется - ничего лишнего в запросе нет.

  Ответить  
 
 автор: mimik   (22.01.2011 в 19:49)   письмо автору
 
   для: Trianon   (22.01.2011 в 19:41)
 

>всё достаточно аккуратно.
>Если кроме имен команд ничего не требуется - ничего лишнего в запросе нет.
Спасибо.
Там выбираются ещё несколько столбцов, делаю аналогично именам команд, т.е.

SELECT t1.name team1, t2.name team2, t1.country, t2.country, ...

  Ответить  
 
 автор: Trianon   (22.01.2011 в 19:57)   письмо автору
 
   для: mimik   (22.01.2011 в 19:49)
 

уже в этом фрагменте видно, что добавляете столбики Вы не аналогично name
Потому что не ставите алиасы.

Если будете к полям обращаться по именам (country) - будут проблемы.

  Ответить  
 
 автор: mimik   (22.01.2011 в 20:03)   письмо автору
 
   для: Trianon   (22.01.2011 в 19:57)
 

сорри, там неправильно написал, сейчас пишу вот так:

SELECT t1.name team1_name, t2.name team2_name, c1.name team1_country, c2.name team2_country
   FROM games g
   LEFT JOIN teams t1 ON g.team1_id=t1.id
   LEFT JOIN teams t2 ON g.team2_id=t2.id
   LEFT JOIN countries c1 ON t1.country_id=c1.id
   LEFT JOIN countries c2 ON t2.country_id=c2.id

tables:
games: id, team1_id, team2_id
teams: id, name, country_id
countries: id, name

  Ответить  
 
 автор: kosta_in_net   (24.01.2011 в 10:17)   письмо автору
 
   для: mimik   (22.01.2011 в 20:03)
 

вопрос "как правильно выбрать все игры"... Я не понял, зачем Джона позвали? Почему не выбрать их просто:
SELECT * FROM games
?
Зачем все эти team_name, team2_name, team3_name, team4_name ... team10000000_name?

  Ответить  
 
 автор: mimik   (24.01.2011 в 10:55)   письмо автору
 
   для: kosta_in_net   (24.01.2011 в 10:17)
 

> SELECT * FROM games
> ?
сейчас в таблице games есть только айдишники команд, а что вы предлагаете?

> Зачем все эти team_name, team2_name, team3_name, team4_name ... team10000000_name?
а как мне потом обращатся к ним в пхп?

  Ответить  
 
 автор: kosta_in_net   (24.01.2011 в 16:54)   письмо автору
 
   для: mimik   (24.01.2011 в 10:55)
 

вот я и спрашиваю, что именно нужно получить? Было сказано "выбрать все игры". Айдишники - это не все игры? Я пытаюсь уточнить физический смысл задачи

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования