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

Форум MySQL

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

 

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

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

тема: RIGHT JOIN
 
 автор: OLi   (09.01.2012 в 23:33)   письмо автору
 
 

В самом простейшем случае получил:
SELECT * FROM notes LEFT JOIN buttles USING(id);
Мне нужно к этому запросу добавить еще 1 таблицу (3-ю), объединив поле link 2-й с полем link 3-й таблицы..
Подскажите пжл


____________
Вот что пришло на ум из того что успел прочесть:
SELECT * FROM notes AS t1 JOIN buttles AS t2 LEFT JOIN protivniki AS t3 ON t1.id = t2.id AND t2.link = t3.link;

  Ответить  
 
 автор: OLi   (09.01.2012 в 23:44)   письмо автору
 
   для: OLi   (09.01.2012 в 23:33)
 

Только в таком случае из 3-й таблицы возвращает все поля как NULL
Что требуется подправить?
SELECT * FROM notes AS t1 JOIN buttles AS t2 LEFT JOIN protivniki AS t3 ON t1.id = t2.id AND t2.link = t3.link

  Ответить  
 
 автор: Slo_Nik   (10.01.2012 в 00:01)   письмо автору
 
   для: OLi   (09.01.2012 в 23:44)
 

После SELECT надо указывать с какой таблицы и что тащите....
Я бы для начала указал ещё и таблицы к выбираемым данным

<?php 
/* выбрать из таблиц имена чего то, где id равен id из первой таблицы */
$query "SELECT `t1`.`name` AS `t1_name`,
                 `t1`.`id` AS `t1_id`,
                 `t2`.`name` AS `t2_name`,
                 `t3`.`name` AS `t3_name`
FROM `table_first` AS `t1`
LEFT JOIN `table_second` AS `t2` ON(`t2`.`id` = `t1`.`id`)
LEFT JOIN `table_third` AS `t3` ON(`t3`.`id` = `t1`.`id`)
WHERE `t1`.`id` = 1"
;

  Ответить  
 
 автор: OLi   (10.01.2012 в 00:06)   письмо автору
 
   для: OLi   (09.01.2012 в 23:44)
 

Вот еще что:
<?
 SELECT 
FROM notes RIGHT JOIN buttles ON buttles.id notes.id RIGHT JOIN protivniki  ON protivniki.link buttles.link;

Оно на 95% то что мне надо, только нужно добавить условие WHERE notes.user=числу

  Ответить  
 
 автор: cheops   (10.01.2012 в 00:07)   письмо автору
 
   для: OLi   (10.01.2012 в 00:06)
 

Можно смело добавлять WHERE-условие, оно будет применено к полученной результирующей таблице.

  Ответить  
 
 автор: OLi   (10.01.2012 в 00:10)   письмо автору
 
   для: cheops   (10.01.2012 в 00:07)
 

Сделал в общем так:
SELECT * FROM notes RIGHT JOIN buttles ON buttles.id = notes.bitva_id RIGHT JOIN protivniki  ON protivniki.link = buttles.link WHERE notes.user=23

  Ответить  
 
 автор: OLi   (10.01.2012 в 00:30)   письмо автору
 
   для: OLi   (10.01.2012 в 00:10)
 

А можно к запросу добавить dintinct чтобы не выводились повторы для notes.user=23

  Ответить  
 
 автор: OLi   (10.01.2012 в 02:29)   письмо автору
 
   для: OLi   (10.01.2012 в 00:30)
 

Кто-то остался в теме?

  Ответить  
 
 автор: cheops   (10.01.2012 в 14:23)   письмо автору
 
   для: OLi   (10.01.2012 в 00:30)
 

Лучше добавить GROUP BY notes.user, или лучше вообще тогда первый RIGHT JOIN заменить на LEFT JOIN.

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

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