Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.07.2012, 21:56   #1
kilogram
Форумчанин
 
Регистрация: 04.03.2012
Сообщений: 144
По умолчанию left join

Есть 2 таблицы: name1 и name2;
name1 создана так:

Код:
create table name1(id int(3) auto_increment, name varchar(10), primary key(id))

name2 создана так:

Код:
create table name2(id int(3) auto_increment, name varchar(10), primary key(id),foreign key(name) references name1)

Вот так заполнены таблицы:



Ввожу такой запрос, не работает.

Код:
select * from name1 left join name1 on name1.name=name2.name

Только начинаю изучать эти джоины, читаю здесь по примеру похожему, что-то не срабатывает: http://www.mysql.ru/docs/man/JOIN.html

Если можно покажите на моих банальных таблицах работу join. Заранее благодарю.
kilogram вне форума Ответить с цитированием
Старый 13.07.2012, 23:43   #2
kilogram
Форумчанин
 
Регистрация: 04.03.2012
Сообщений: 144
По умолчанию

left join должен искать все строки в таблице name1 с величиной name, которая не присутствует в таблице name2, но в name2 присутствует Петя, почему оно все равно его выводит при этом запросе ниже?

Код:
select name1.name from name1 left join name2 on  name1.name=name2.name
kilogram вне форума Ответить с цитированием
Старый 14.07.2012, 00:01   #3
kilogram
Форумчанин
 
Регистрация: 04.03.2012
Сообщений: 144
По умолчанию

Там http://ru.wikipedia.org/wiki/Join_(SQL) написано такое:
Цитата:
LEFT OUTER JOIN

К левой таблице присоединяются все записи из правой, соответствующие условию (по правилам inner join), плюс все не вошедшие записи из левой таблицы, поля правой таблицы заполняются значениями NULL.
А как знать где левая таблица, а где правая?
kilogram вне форума Ответить с цитированием
Старый 14.07.2012, 00:24   #4
kilogram
Форумчанин
 
Регистрация: 04.03.2012
Сообщений: 144
По умолчанию

Перед джоином обязательно должна стоять таблица которая ссылается, а после джоина таблица на которую ссылаются?
kilogram вне форума Ответить с цитированием
Старый 14.07.2012, 01:00   #5
kilogram
Форумчанин
 
Регистрация: 04.03.2012
Сообщений: 144
По умолчанию

Вот написал запрос:
Код:
select *from name1 right join name2 on  name1.name=name2.name where name1.name is not NULL
К таблице, имя которой стоит перед джойном - name1,
присоединяется таблица, имя которой идет после джойна - name2
Далее стоит условие, согласно которому выводить. Условие такое:

Выводить, все строки из таблицы name1 с полем name, которые не присутствуют в таблице name2.

У меня такие записи в таблице name2, добавил 2 записи:


Почему в результате выводит?
Код:
1  Петя   1 Петя
kilogram вне форума Ответить с цитированием
Старый 14.07.2012, 05:13   #6
Joeymax
Пользователь
 
Регистрация: 17.01.2012
Сообщений: 14
По умолчанию

left join выведёт все строки из левой таблицы. Для строк из левой таблицы, которым было найдено соответствие в правой таблице, будут выведены действительные значения правой таблицы. В противном случае будет выведено NULL.
right join - аналогично left join, тоже самое, но словно таблицы местами поменялись.
Joeymax вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
запрос с left join KatrinSecret SQL, базы данных 2 18.01.2012 22:31
Псевдоним для результата left join vedro-compota SQL, базы данных 8 26.12.2011 00:28
IE8. не работает padding-left, margine-left dimonnnn HTML и CSS 7 13.08.2010 19:33
left join странная ошибка pobedin БД в Delphi 6 24.06.2010 13:48
LEFT JOIN acidcool SQL, базы данных 12 20.08.2009 19:23