- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
задача такая, есть таблицы:
мне бы надо выбрать:
child.id, child.name, class.name, parent.name, parent.type
это просто - пока не понимаешь, что у ребенка есть и папа и мама...
при простой выборке в нее попадает либо один, либо другой - в зависимости от того какой последний был, а мне бы как то ухитриться обоих туда включить и лишние запросы не плодить при этом, в духе:
child.id, child.name, class.name, parent.name AS papa_name, parent.name AS mama_name
будут идеи?
в одну строчку не знаю, но можно попробовать сделать что-то типа GROUP BY parent.type
update: в смысле, чтобы результат был в одну строчку, мой вариант подразумевает, что будет и для папы, и для мамы дубляж.
в одну строчку не знаю, но можно попробовать сделать что-то типа GROUP BY parent.type
update: в смысле, чтобы результат был в одну строчку, мой вариант подразумевает, что будет и для папы, и для мамы дубляж.
Совершенно верно - в выборке получается два одинаковых ребенка, с разными соответственно родителями - так не подходит...
Кстати еще вопрос - можно как-нибудь переписывать имена полей по принципу:
SELECT table.* AS preffix_*
т.е. в указанном варианте не работате конечно, но принцип понятен. Идея в том чтобы все перепись была вида:
table.id AS preffix_id
table.field1 AS preffix_field1
...
left join вестимо
Примерно: выбрать детей left join папа left join мама
Поля можно именовать как хош - тоже не проблема
left join вестимо
Примерно: выбрать детей left join папа left join мама
Поля можно именовать как хош - тоже не проблема
Сам примерно так же думаю - но вопрос как лучше делать вместо папа/мама? Подставлять туда оригинальную таблицу и делать ON type=... или же подставлять вложенный запрос?
Кроме того две сложности:
1. Таблицы связанны через промежуточную таблицу
2. Как поля переименовать?
По сути мне вот так нужно получить:
[ATTACH]30157[/ATTACH]
Это сходу. может где чё упустил, но принцип такой.
SELECT
`child`.`id`, `child`.`name`, `class`.`name` as `cname`, `papa`.`name` as `papasha`, `mama`.`name` as `mamasha`
FROM
`children_table` as `child`,
`klass_table` as `class`
LEFT JOIN
`parents_table` as `papa`
ON
`child`.`parent_id` = `papa`.`child_id`
AND
`papa`.`type` = 'ПАПА'
LEFT JOIN
`parents_table` as `mama`
ON
`child`.`parent_id` = `mama`.`child_id`
AND
`mama`.`type` = 'МАМА'
WHERE
`child`.`class_id` = `class`.`id`
Правда если есть ВСЕГДА папа и мама, то можно обычным запросом без left join
а для чего нужна таблица
relation.parent_id, relation.child_id
?
почему бы просто не использовать поля papa_id и mama_id в таблице ::дети?
а для чего нужна таблица почему бы просто не использовать поля papa_id и mama_id в таблице ::дети?
а вдруг возникнут еще дедушка и бабушка?
Это сходу. может где чё упустил, но принцип такой.
Правда если есть ВСЕГДА папа и мама, то можно обычным запросом без left join
Угу - в корень зрите! Не всегда есть! :)
Упустили момент - что в таком варианте много мусора вылезает. В принципе решил так:
SELECT ... LEFT JOIN (SELECT [папы, связи]) LEFT JOIN (SELECT [мамы, связи]) LEFT JOIN [классы]
видимо вариант окончательный... т.к. меньшее количество уже трудно представить.