Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Снова джоины

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
VestCoastman
Отправлено: 17 Августа, 2013 - 01:25:47
Post Id



Посетитель


Покинул форум
Сообщений всего: 374
Дата рег-ции: Дек. 2010  


Помог: 3 раз(а)




Есть элементарный запрос и цикл из этого запроса
"Код" (Отобразить)

В этом запросе "sid" - это идентификатор раздела из таблицы "sections".
Как переделать запрос так, чтобы вместо идентификатора раздела(целого числа), выводилось "title" - название этого раздела из таблицы "sections".



Всё никак руки не доходят, чтобы сесть и изучить джоины
 
 Top
Саныч Модератор
Отправлено: 17 Августа, 2013 - 01:38:10
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. SELECT c.`id`, c.`title`, c.`lvl`, c.`desc`, s.`title` AS section_title
  2. FROM `categories` AS c
  3. INNER JOIN `sections` AS s
  4.     ON s.`id` = c.`sid`
  5. ORDER BY c.`id` DESC


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
VestCoastman
Отправлено: 17 Августа, 2013 - 02:04:58
Post Id



Посетитель


Покинул форум
Сообщений всего: 374
Дата рег-ции: Дек. 2010  


Помог: 3 раз(а)




Саныч, а что такое "section_title"?
Я подразумеваю это `sections`.`title` или просто `sections`, но проверил, оказалось нет.
В первом случае просто пустой результат, а во втором undefined index sid
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT `categories`.`id`, `categories`.`title`, `categories`.`lvl`, `categories`.`desc`, `sections`.`title` AS `sections`
  2. FROM `categories` AS `categories`
  3. INNER JOIN `sections` AS `sections`
  4.     ON `sections`.`id` = `categories`.`sid`
  5. ORDER BY `categories`.`id` DESC

(Отредактировано автором: 17 Августа, 2013 - 02:05:35)

 
 Top
Саныч Модератор
Отправлено: 17 Августа, 2013 - 11:18:07
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)




section_title - это имя, под которым этот столбец (sections.title) будет доступен в результирующей выборке. У вас 2 столбца с именем title, вот один из них и нужно "переименовать"


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
VestCoastman
Отправлено: 17 Августа, 2013 - 14:03:58
Post Id



Посетитель


Покинул форум
Сообщений всего: 374
Дата рег-ции: Дек. 2010  


Помог: 3 раз(а)




Переименовал sections.title в sections.stitle
В итоге получился запрос
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT  `{$config['cat']}`.`id`,
  2.         `{$config['cat']}`.`title`,
  3.         `{$config['cat']}`.`lvl`,
  4.         `{$config['cat']}`.`desc`,
  5.         `{$config['sec']}`.`stitle` AS `{$config['sec']}`.`stitle`
  6.  
  7. FROM `{$config['cat']}` AS `{$config['cat']}`
  8. INNER JOIN `{$config['sec']}` AS `{$config['sec']}`
  9.         ON `{$config['sec']}`.`id` = `{$config['cat']}`.`sid`
  10. ORDER BY `{$config['cat']}`.`id` DESC

Ошибка:
CODE (htmlphp):
скопировать код в буфер обмена
  1. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.`stitle` FROM `categories` AS `categories` INNER JOIN `' at line 5
 
 Top
soffrick
Отправлено: 17 Августа, 2013 - 14:28:36
Post Id



Посетитель


Покинул форум
Сообщений всего: 379
Дата рег-ции: Май 2012  
Откуда: Россия, Москва


Помог: 17 раз(а)




VestCoastman
SQL код то покажи


-----
Правильный вопрос - уже половина правильного ответа!

p.s. индусы повсюду, будьте осторожны!
 
 Top
Саныч Модератор
Отправлено: 17 Августа, 2013 - 15:14:58
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)




мда... Подучите основы SQL.
Когда я говорил переименовать, я не имел ввиду изменить название непосредственно в таблице. AS задает как бы псевдоним для столбца. У вас в выборке получается 2 столбца с одним и тем же именем, как к ним потом обращаться? Вот для этого для одного из них, или для обоих сразу, указываются псевдонимы через AS.
Далее, указывать для имени таблицы псевдоним такой же как и имя таблицы не нужно.
Далее, хранить имена таблиц в конфиге - ну это вобще бред уже...


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
DeepVarvar Супермодератор
Отправлено: 17 Августа, 2013 - 16:11:29
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




 
 Top
VestCoastman
Отправлено: 17 Августа, 2013 - 18:47:05
Post Id



Посетитель


Покинул форум
Сообщений всего: 374
Дата рег-ции: Дек. 2010  


Помог: 3 раз(а)




DeepVarvar
То что надо. С подробными комментариями. Спасибо. Буду заучивать)
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB