Работа с 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. Заранее благодарю. |
Цитата:
Код:
select * from name1 left join name2 on name1.name=name2.name |
Попробовал алиасы использовать ,прочитал про них, с ними почему то не работает.
Код:
select * from name1 as n1, name2 as n2, left join n2 on n2.name=n1.name Код:
select * from name1 left join name2 on name1.name=name2.name; Код:
select * from name1 left outer join name2 on name1.name=name2.name; |
left join должен искать все строки в таблице name1 с величиной name, которая не присутствует в таблице name2, но в name2 присутствует Петя, почему оно все равно его выводит при этом запросе ниже?
Код:
select name1.name from name1 left join name2 on name1.name=name2.name |
Цитата:
|
Там http://ru.wikipedia.org/wiki/Join_(SQL) написано такое:
Цитата:
|
Левая таблица, это та, которая указывается слева слов LEFT JOIN, правая - соответственно справа.
|
Цитата:
Цитата:
|
Перед джоином обязательно должна стоять таблица которая ссылается, а после джоина таблица на которую ссылаются?
|
Цитата:
|
Вот написал запрос:
Код:
select *from name1 right join name2 on name1.name=name2.name where name1.name is not NULL присоединяется таблица, имя которой идет после джойна - name2 Далее стоит условие, согласно которому выводить. Условие такое: Выводить, все строки из таблицы name1 с полем name, которые не присутствуют в таблице name2. У меня такие записи в таблице name2, добавил 2 записи: ![]() Почему в результате выводит? Код:
1 Петя 1 Петя |
Остальные строчки отсекаются этим:
Код:
where name1.name is not NULL |
Цитата:
Если коротко, то левая таблица - слева от JOIN, а правая - справа. Вообще у Вас неудачный пример для изучения, т.к. "вязать" таблицы по текстовым полям - это оочень плохо. Обычно таблицы связываются по числовым полям (ID). Попробуйте разобраться с присоединением к таблице Заказов текстовоых полей из таблицы (справочника) Товаров. Первая таблица содержит поля ID и TovarID. Вторая - ID и Name. Чтобы показать список заказов из первой таблицы, причем названия товаров вытащить из второй SQL-запрос будет выглядеть так: select name1.ID, name2.name from name1 left join name2 ON name1.tovarID=name2.ID |
Часовой пояс GMT +3, время: 13:24. |