![]() |
|
Модераторы: skyboy |
![]()
|
|
| vitamax |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 24.5.2011 Репутация: нет Всего: нет |
Гуру SQL, помогите!
Имеется следующая таблица: ![]() на выходе должна быть следующая таблица ![]() Пояснения: Исходная таблица содержит в себе переводы нескольких полей из другой таблицы, а так же сами ориганильные значения этих полей (для удобства). Переводимые поля: title, home_summary, interior_exterior_design, local_area_and_activities. В исходной таблице: id - счетчик auto_increment id_advert - id материала lang - язык. Где: 0 - оригинальные значения полей. 1 -RU, 2 - EN, 3 - ES title, home_summary, interior_exterior_design, local_area_and_activities - текстовые поля для перевода published - ключ, показывающий опубликован ли перевод или нет. В сводной таблице нужно отобразить id_advert, title оригинала, published для русского перевода, published для анг пеервода, published для ES title оригинала - это значение поля title, где поле lang == 0. Чтобы было визуально понятно, вот представление того, где эта сводная таблица будет использована ![]() Так вот вопрос в тм, как получить эту сводную таблицу? ограничения на кол-во запросов нет. |
|||
|
||||
| triclosan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 515 Регистрация: 18.8.2006 Репутация: 3 Всего: 12 |
|
|||
|
||||
| vitamax |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 24.5.2011 Репутация: нет Всего: нет |
спасибо огромное!
|
|||
|
||||
| vitamax |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 24.5.2011 Репутация: нет Всего: нет |
А как изменить этот запрос, чтобы вывелись только строки, в которых есть хотя бы одно поле published, не равное единице?
И с другой стороны, как изменить этот запрос, чтобы вывелись только строки, в которых все поля published равны единице? |
|||
|
||||
| triclosan |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 515 Регистрация: 18.8.2006 Репутация: 3 Всего: 12 |
Это сообщение отредактировал(а) triclosan - 26.5.2011, 18:08 |
||||
|
|||||
| vitamax |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 24.5.2011 Репутация: нет Всего: нет |
спасибо, triclosan!
|
|||
|
||||
| vitamax |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 24.5.2011 Репутация: нет Всего: нет |
Помогите, пожалуйста, доработать запрос.
есть следующий запрос:
есть таблица wh_special_offer: id - auto_increment id_advert type - tinyint(1) Вопрос - как в этот запрос (в результирующую таблицу) добавить дополнительное поле _count, значение для которого берется из таблицы wh_special_offer следующим образом: для всех найденных строк запроса подсчитывается кол-во строк в wh_special_offer, где wh_special_offer.id_advert=wh_advert_ess_info.id wh_advert_ess_info.id оно же adv_id, wh_advert.id текущий результат запроса |
|||
|
||||
| triclosan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 515 Регистрация: 18.8.2006 Репутация: 3 Всего: 12 |
запрос некорректен (во всяком случае на первый взгляд) вы выбираете негруппируемые значения, этого очень плохо, лучше всего подробнее опишите вашу структуру данных.
|
|||
|
||||
| vitamax |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 24.5.2011 Репутация: нет Всего: нет |
вот схема связей.
![]() пока рисовал, вспомнил свой один косяк. В таблице jos_datsogallery может не быть записи для данного wh_advert.id. Тогда jos_datsogallery.imgfilename должна вернуть пустую строку. Т.е. отсутствие записи в таблице jos_datsogallery не должно исключать строку из выдачи. У меня это криво сделано. Здесь наверно следует вместо услвовия
поставить
но опять же отсутствие записи в jos_datsogallery не должно исключать строку из поиска. Просто должна вернуться пустая строка. Вот немного расширенный запрос
|
||||||
|
|||||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
Это mySQL. Увы, там такое безобразие допустимо. rtfm outer join Добавлено через 4 минуты и 25 секунд Добавить соединение с таблицей wh_special_offer по критерию wh_special_offer.id_advert=wh_advert_ess_info.id и посчитать count(distinct wh_special_offer.id) Это сообщение отредактировал(а) Zloxa - 7.6.2011, 09:23 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| vitamax |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 24.5.2011 Репутация: нет Всего: нет |
вопрос тогда по основам sql
вот работающий запрос с использованием LEFT OUTER JOIN
вопрос в том, как сделать выборку из двух таблиц и потом объединить с третьей
выдает ошибку #1054 - Unknown column 't.id' in 'on clause' понятно, что нужно дать имя результирующей таблице, а не имена для каждой из таблиц (t, p). И здесь (ON k.id = t.id) использовать не таблицу t, а результирующую таблицу |
||||
|
|||||
| triclosan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 515 Регистрация: 18.8.2006 Репутация: 3 Всего: 12 |
||||
|
||||
| Zloxa |
|
||||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
предупреждает. но в документации )) Добавлено через 3 минуты и 19 секунд
-------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
||||
|
|||||
| vitamax |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 24.5.2011 Репутация: нет Всего: нет |
вроде получил нужный мне запрос.
Если есть какие-то явные недочеты, прошу высказаться
Добавлено @ 16:08 но вопрос-то остался
Это сообщение отредактировал(а) vitamax - 7.6.2011, 16:09 |
||||
|
|||||
| vitamax |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 24.5.2011 Репутация: нет Всего: нет |
всё, этот вопрос снят! ура)
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Составление SQL-запросов | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |