SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 22.09.2011 11:03:10

ztDan4ik
Участник
Зарегистрирован: 22.09.2011
Сообщений: 2

Нужно разобратся в запросе MySQL

Доброе время суток. Возможно пишу не в том разделе, заранее прошу извинения.
Прошу помочь разобраться в запросе, который находится ниже:

$query = ' SELECT p.*,c.name as name_category,t.name as name_type,cy.name as name_country,s.name as name_state,l.name as name_locality,pf.name as name_profile,pf.logo_image as logo_image_profile, '      
 . ' CASE WHEN CHAR_LENGTH(p.alias) THEN CONCAT_WS(":", p.id, p.alias) ELSE p.id END as Pslug,'
 . ' CASE WHEN CHAR_LENGTH(c.alias) THEN CONCAT_WS(":", c.id, c.alias) ELSE c.id END as Cslug,'
 . ' CASE WHEN CHAR_LENGTH(cy.alias) THEN CONCAT_WS(":", cy.id, cy.alias) ELSE cy.id END as CYslug,'
 . ' CASE WHEN CHAR_LENGTH(s.alias) THEN CONCAT_WS(":", s.id, s.alias) ELSE s.id END as Sslug,'      
 . ' CASE WHEN CHAR_LENGTH(l.alias) THEN CONCAT_WS(":", l.id, l.alias) ELSE l.id END as Lslug, '    
 . ' CASE WHEN CHAR_LENGTH(t.alias) THEN CONCAT_WS(":", t.id, t.alias) ELSE t.id END as Tslug '
 . ' FROM #__properties_products as p '    
 . ' LEFT JOIN #__properties_country AS cy ON cy.id = p.cyid '            
 . ' LEFT JOIN #__properties_state AS s ON s.id = p.sid '
 . ' LEFT JOIN #__properties_locality AS l ON l.id = p.lid '
 . ' LEFT JOIN #__properties_category AS c ON c.id = p.cid '    
 . ' LEFT JOIN #__properties_type AS t ON t.id = p.type '
 . ' LEFT JOIN #__properties_profiles AS pf ON pf.mid = p.agent_id '          
 . ' WHERE p.published = 1 AND p.parent = '.$id          
 . ' order by p.ordering ';  


Этот запрос был изъят у одного из компонентов для CMS Joomla. Очень буду благодарен тому кто поможет разобраться в данном запросе. Если нужна структура таблиц - обязательно отпишу.

P.S. больше всего интересуют приставки p. s. i. t. и т.д. перед именами колонок.

Неактивен

 

#2 22.09.2011 11:16:52

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2423

Re: Нужно разобратся в запросе MySQL

p, s, i, t - это алиасы, псевдонимы названий таблицы.
Запись #__properties_products as p.
означает, что далее к таблице __properties_products мы будем обращаться через p и условие, например,
WHERE p.published=1 будет расшифровываться как __properties_products.published=1.

Итого:

p   -  __properties_products
cy - __properties_country
s   - __properties_state
l    - __properties_locality
c   -__properties_category
t   -__properties_type
. ' LEFT JOIN #__properties_profiles AS pf ON pf.mid = p.agent_id


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 22.09.2011 11:46:30

ztDan4ik
Участник
Зарегистрирован: 22.09.2011
Сообщений: 2

Re: Нужно разобратся в запросе MySQL

Спасибо.

а как насчёт CASE WHEN CHAR_LENGTH THEN CONCAT_WS ?

Возможно кто-то знает хорошую документацию, мануал по этой части? Желательно на русском.

Неактивен

 

#4 22.09.2011 11:58:30

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2423

Re: Нужно разобратся в запросе MySQL

Официальная документация - она на английском.
возвращает длину строки.
склеивает строки.

На русском ищите в гугле. Что-нибудь вроде "mysql char_length"


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

Board footer

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