SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 07.03.2011 16:29:11

vadimled
Участник
Зарегистрирован: 07.03.2011
Сообщений: 4

Хотелось бы понять сей сложный запрос

Есть такого вида запрос:

$sql = 'SELECT a.*, ' .' CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(":", a.id, a.alias) ELSE a.id END as slug,'.
' CASE WHEN CHAR_LENGTH(cc.alias) THEN CONCAT_WS(":", cc.id, cc.alias) ELSE cc.id END as catslug'.
            ' FROM #__content AS a' .
            ' INNER JOIN #__categories AS cc ON cc.id = a.catid' .
            ' INNER JOIN #__sections AS s ON s.id = a.sectionid' .
            ' WHERE '. $where .' AND cc.id != '.$get_items.'' .
            ($access ? ' AND a.access <= ' .(int) $aid. ' AND cc.access <= ' .(int) $aid. ' AND s.access <= ' .(int) $aid : '').
            ' AND s.published = 1' .
            ' AND cc.published = 1' .
            ' ORDER BY '.$order .' LIMIT 0,'.$nitems.'';
 


Что значит "   'SELECT a.*, ' .'  " и откуда это "a." ?
Вобщем, не могли ли бы вы объяснить мне синтаксис данного запроса.

Неактивен

 

#2 07.03.2011 22:36:16

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5833

Re: Хотелось бы понять сей сложный запрос

SELECT a.* - означает выбрать все колонки из таблицы а
Таблица а - это алиас таблицы #__content (см часть FROM #__content AS a)
'SELECT a.*, ' .'  - означает, что строка запроса $sql формируется из нескольких строк, первая из которых 'SELECT a.*, '

Неактивен

 

#3 08.03.2011 11:20:52

vadimled
Участник
Зарегистрирован: 07.03.2011
Сообщений: 4

Re: Хотелось бы понять сей сложный запрос

Ух ты! Спасибо огромное!

Неактивен

 

#4 08.03.2011 11:26:55

vadimled
Участник
Зарегистрирован: 07.03.2011
Сообщений: 4

Re: Хотелось бы понять сей сложный запрос

И все-таки, если известно что таблица #__content почему бы не написать SELECT * FROM #__content ... Зачем здесь псевдоним?

Неактивен

 

#5 08.03.2011 20:12:58

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5833

Re: Хотелось бы понять сей сложный запрос

select * from выберет записи изо всех трех таблиц, тогда как вам нужно только из одной #__content

Псевдоним нужен для краткости, посмотрите сколько раз в запросе упоминается имя первой таблицы и замените везде "а" на "#__content" smile

Неактивен

 

#6 09.03.2011 09:17:44

vadimled
Участник
Зарегистрирован: 07.03.2011
Сообщений: 4

Re: Хотелось бы понять сей сложный запрос

Спасибо, теперь туман рассеялся smile

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson