Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
mounster
0 / 0 / 1
Регистрация: 23.01.2015
Сообщений: 10
#1

INNER JOIN и детальное пояснение

23.01.2015, 18:00. Просмотров 881. Ответов 2
Метки нет (Все метки)

Здравствуйте! Нужна помощь с выборкой.

Есть 3 таблицы:

region
id | name

city
id | region_id | name

link_location
id | item_id | region_id | city_id

Задача выбрать все записи в которых region.id = link_location.region_id и city.id = link_location.city_id где link_location.item_id = $id

Если можна более подробно что и как работает.
Спасибо!
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.01.2015, 18:00
Ответы с готовыми решениями:

Не выполняется код PHP. Warning: join() [function.join]: Invalid arguments passed
Помогите разобраться в коде <?php $text =...

Пояснение кода
Ребят можете объяснить мне этот код . Желательно подробней $percent = 0.3; ...

Пояснение по ББкодам
Доброго времени суток. Вот такой небольшой вопрос хотел бы узнать точный ответ....

Нужно небольшое пояснение по Smarty
Здравствуйте, мне необходимо было запретить доступ к одной из страниц на сайте...

Пояснение пару строк скрипта
Вот скрипт: function clear_dir($url) { $filelist = scandir($url); foreach...

2
Jodah
Эксперт PHP
2704 / 2376 / 1013
Регистрация: 01.08.2012
Сообщений: 8,405
24.01.2015, 10:09 #2
Лучший ответ Сообщение было отмечено mounster как решение

Решение

Допустим, есть 2 таблицы: users и groups. У users 3 поля: id, name, group_id. У groups 2 поля: id, name.

Представим, что нам нужно получить таблицу с 2 колонками: имя пользователя и название его группы, т.е. Вася -> 308 (users.name -> groups.name).

Это делается так:

SQL
1
2
3
SELECT users.name AS 'user', groups.name AS 'group'
    FROM `users`
    LEFT JOIN `groups` ON users.group.id = groups.id
В данном примере мы получаем всех пользователей, а во вторую колонку записывается либо название группы (если группа с таким id есть в таблице groups), либо пустота.

Если вместо LEFT JOIN мы напишем INNER JOIN, то выведутся только те пользователи и группы, у которых есть совпадения по условию users.group.id = groups.id.

Т.е. если есть пользователь "Петя", у которого в group_id указан идентификатор несуществующей группы, то в случае LEFT JOIN он попадёт в вывод, в случае INNER JOIN нет.

Для INNER JOIN неважно, в какой последовательности писать таблицы. Следующие примеры равнозначны:

SQL
1
2
SELECT * FROM `users` INNER JOIN `groups`ON ...
SELECT * FROM `groups` INNER JOIN `users` ON...
В случае LEFT JOIN выведутся все записи первой (левой) таблицы, а добавляться данные будут из правой (можно написать RIGHT JOIN, суть та же).

Можно использовать сразу несколько INNER JOIN для сложных условий. Например, получить название, бренд и название категории товара с заданным id. Здесь нужно объединять 3 таблицы: products, brands и categories.

В вашем случае код будет такой:

PHP
1
2
3
4
5
$query = "
SELECT region.name FROM `region`
    INNER JOIN `link_location` ON region.id = link_location.region_id
    INNER JOIN `city` ON city.id = link_location.city_id
        WHERE link_location.item_id = " . $id;
Добавлено через 7 часов 40 минут
Ошибочка, в первом примере group_id, а не GROUP.id
1
mounster
0 / 0 / 1
Регистрация: 23.01.2015
Сообщений: 10
24.01.2015, 19:58  [ТС] #3
Спасибо! Работает.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.01.2015, 19:58

Sql Join
Здравствуйте, помогите сделать JOIN запрос в базу имею таблицы tovar...

INSERT, JOIN, PDO
Привет, мир! Подскажите, как делается вот такие вот плюшки, см. ниже? 1)...

JOIN ON если NULL
Еще раз я обращаюсь к вам со своим расписанием. Суть: SELECT tt.id,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru