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

Форум MySQL

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

 

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

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

тема: SELECT-запрос с использованием двух таблиц
 
 автор: technic611   (12.01.2011 в 17:52)   письмо автору
 
 

Приветсвую.

Есть две таблицы

users которые содержат данные об юзвере и идентификатор id_town города в котором он живет, тоесть цифра
login | id_town
. . .
technic25 | 5
artem | 6
. . .

и есть таблица городов town, id которых соответствуют идентификатору в таблице
id_town | town
. . .
5 | Балашиха
6 | Электроугли
. . .

нужно сделать запрос пользователей из таблицы users а идентификатор менять на название города из таблицы town

вот немогу никак придумать запрос чтоб за раз все вытаскивать, а ведь банальщина (((

  Ответить  
 
 автор: cheops   (12.01.2011 в 17:56)   письмо автору
 
   для: technic611   (12.01.2011 в 17:52)
 

Можно поступить следующим образом
SELECT users.login AS login,
town.town AS town
FROM users LEFT JOIN town ON (users.id_town = town.id_town)
GROUP BY login

  Ответить  
 
 автор: technic611   (12.01.2011 в 18:21)   письмо автору
 
   для: cheops   (12.01.2011 в 17:56)
 

спасибо за оперативный ответ. работает ))) что здесь значят операторы ON, LEFT JOIN ? и для чего приставка AS она обязательна в синтаксисе?
P.S. почему не напишите книжку jQuery и Ява скриптам?

  Ответить  
 
 автор: cheops   (12.01.2011 в 18:26)   письмо автору
 
   для: technic611   (12.01.2011 в 18:21)
 

Времени маловато даже по PHP и MySQL книги обновить, а совершенно новый материал требует очень много времени посвященного исключительно ему. Кроме того, по Java Script много хороших книг - тут сложно, что-то новое сказать. По jQuery согласен, не хватает хорошего издания (если это вообще возможно - все-таки это библиотека, т.е. приложение, а не полноценная технология, как JavaScript, которую можно разобрать от и до).

  Ответить  
 
 автор: technic611   (12.01.2011 в 18:30)   письмо автору
 
   для: cheops   (12.01.2011 в 18:26)
 

даааа давненько уже нет обновлений, грустно (

  Ответить  
 
 автор: technic611   (12.01.2011 в 20:33)   письмо автору
 
   для: cheops   (12.01.2011 в 18:26)
 

а если нужно вывести допустим еще и район, он находится в этой ж таблице town в этом же столбце что и города

town
id_town name id_rayon
2 | Балашихинский р-н | 0
. . .

5 | Балашиха | 2

  Ответить  
 
 автор: Trianon   (12.01.2011 в 20:55)   письмо автору
 
   для: technic611   (12.01.2011 в 20:33)
 

тогда выходит, что таблица содержит id-parent_id дерево регионального подчинения, и называть её town неразумно.

ключевое слово AS - необязательное
Тем не менее иногда запрос с его применением лучше читается.
А иногда - наоборот.
Особенно если используются однобуквенные алиасы таблиц.

По поводу LEFT JOIN ... ON - см.здесь

  Ответить  
 
 автор: technic611   (12.01.2011 в 23:36)   письмо автору
 
   для: Trianon   (12.01.2011 в 20:55)
 

ну таблица у меня изначально называет region. просто пример указал с городами. решил все в одно загнать и регионы и города да наверно напрасно...

  Ответить  
 
 автор: Trianon   (12.01.2011 в 23:49)   письмо автору
 
   для: technic611   (12.01.2011 в 23:36)
 

почему напрасно?
если требуется оперировать адресами, которые могут состоять из цепочек таких регионов (Ленинградская обл., Всеволожский р-н, пос.Токсово, к примеру) , то можно и в одну таблицу загнать.
Райцентры можно пометить соответствующим образом, чтобы их выборка подавляла данные района.

  Ответить  
 
 автор: technic611   (13.01.2011 в 00:01)   письмо автору
 
   для: Trianon   (12.01.2011 в 23:49)
 

а можно по-русски писать? спасибо

  Ответить  
 
 автор: Trianon   (13.01.2011 в 00:18)   письмо автору
 
   для: technic611   (13.01.2011 в 00:01)
 

> technic611 (13.01.2011 в 00:01)
для: Trianon (12.01.2011 в 23:49)


>а можно по-русски писать? спасибо

в посте (12.01.2011 в 23:49) нет ни одного иностранного слова.

  Ответить  
 
 автор: cheops   (13.01.2011 в 09:38)   письмо автору
 
   для: technic611   (12.01.2011 в 23:36)
 

Непонятно вот что, как связать таблицу users и region? Приведите полные структуры ваших таблиц.

  Ответить  
 
 автор: technic611   (14.01.2011 в 16:41)   письмо автору
 
   для: cheops   (13.01.2011 в 09:38)
 

http://cs11180.vkontakte.ru/u7399462/123414107/x_dad0fc8c.jpg

  Ответить  
 
 автор: cheops   (14.01.2011 в 16:47)   письмо автору
 
   для: technic611   (14.01.2011 в 16:41)
 

Этого мало, сколько у вас вообще сейчас связанных таблиц (пользователи, города, районы, шоссе, станции метро)?

  Ответить  
 
 автор: technic611   (14.01.2011 в 17:20)   письмо автору
 
   для: cheops   (14.01.2011 в 16:47)
 

http://cs11180.vkontakte.ru/u7399462/123414107/x_c8b690d1.jpg

всего две юзеры и регионы+города (два в одной)

  Ответить  
 
 автор: cheops   (14.01.2011 в 17:26)   письмо автору
 
   для: technic611   (14.01.2011 в 17:20)
 

Так, а таблица регионы+города (два в одной) какую структуру имеют?

PS Картинки, кстати, можно и тут на форуме прикреплять.

  Ответить  
 
 автор: technic611   (14.01.2011 в 17:49)   письмо автору
17.6 Кб
 
   для: cheops   (14.01.2011 в 17:26)
 

вот же прикрепил
там шоссе города подчиненные шоссе по идентификатору

  Ответить  
 
 автор: cheops   (14.01.2011 в 17:54)   письмо автору
 
   для: technic611   (14.01.2011 в 17:49)
 

Нет, а где таблица с регионами и городами?

  Ответить  
 
 автор: technic611   (14.01.2011 в 19:24)   письмо автору
 
   для: cheops   (14.01.2011 в 17:54)
 

эта и есть она, под регоном я подразумевал название шоссе(оно вместо региона)

  Ответить  
 
 автор: cheops   (14.01.2011 в 19:28)   письмо автору
 
   для: technic611   (14.01.2011 в 19:24)
 

А понял, таблица сама на себя замкнута...
1)Так, а что нам нужно в конце получить в результирующей таблице: имя пользователя, город и шоссе?
2) Поле users.id_town с каким полем таблицы town связано (id_name или id_road)?

  Ответить  
 
 автор: technic611   (14.01.2011 в 19:33)   письмо автору
 
   для: cheops   (14.01.2011 в 19:28)
 

1) да имя пользователя, город и шоссе и их вывести
2) с id_name таблицы town

  Ответить  
 
 автор: cheops   (14.01.2011 в 19:44)   письмо автору
 
   для: technic611   (14.01.2011 в 19:33)
 

Попробуйте следующий запрос
SELECT u.name AS name, 
t.name AS town,
r.name AS road 
FROM users AS u LEFT JOIN town AS t ON (u.id_town = t.id_name)
LEFT JOIN town AS r ON (t.id_road = r.id_name)
GROUP BY name

  Ответить  
 
 автор: technic611   (17.01.2011 в 16:26)   письмо автору
 
   для: cheops   (14.01.2011 в 19:44)
 

у меня в одной таблице и города и название шоссе( а тут как я понял они берутся из разных таблиц
t.name AS town,
r.name AS road

  Ответить  
 
 автор: cheops   (17.01.2011 в 16:30)   письмо автору
 
   для: technic611   (17.01.2011 в 16:26)
 

Нет, из одной и той же, просто при самообъеденении таблицы необходимо вводить алиасы (псевдонимы). Вы сами попробуйте, я воспроизвел ваши таблицы у себя - вроде получается без ошибок.

  Ответить  
 
 автор: technic611   (14.01.2011 в 16:42)   письмо автору
 
   для: cheops   (13.01.2011 в 09:38)
 

просто я решил еще выводить название шоссе, а шоссе находится в том жеполе что и город

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

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