| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Базы Данных > Помогите составить сложный запрос |
| Автор: MrImho 5.1.2010, 11:48 | ||
| Здравствуйте, раньше мне хватало простых запросов, но сейчас из-за специфики задания, нельзя использовать простые запросы в связке с php. Вот как выборка происходит на простых запросах:
Нужно сделать тоже самое но за 1 запрос к mysql, что-то типа: SELECT * FROM cat_tov INNER JOIN cat_tov_img USING(ID), но этот запрос все строки из таблицы cat_tov_img добавляет в таблицу cat_tov, а мне надо чтобы добавилась ещё 1 колонка с именем img, вообщем смотрите выше, то что я написал работает. Незнаю понятно ли объяснил, попробую ещё подругому: создать колонку img и записать туда объединение значений колонок из таблицы cat_tov_img, результат будет выглядеть я думаю так: [img]=>Array ( [tovID]=>... [name]=>... [vid]=>... [ext]=>... ) Примечание: в таблице cat_tov колонки img нету, т.е. её нужно создать и добавить в поток и этот img должен быть в виде массива что я написал выше. Всем спасибо за ответы. |
| Автор: Ипатьев 5.1.2010, 12:08 |
| "в общем" и "не знаю" пишется раздельно. что за такая специфика задания? в mysql нет типа данных "массив", и, следовательно ,вернуть она его не может |
| Автор: ТоляМБА 5.1.2010, 12:33 |
| MrImho, структура таблицы1, несколько строк данных, структура таблицы2, несколько строк данных, по каким полям связывать, дополнительные условия выборки, что нужно получить в итоге. Опиши это и вероятность ответа увеличится. |
| Автор: MrImho 6.1.2010, 10:16 |
| структура таблицы 1 (cat_tov) сокращённая, но этого будет достаточно: ID | name 1 | имя 1 2 | имя 2 структура таблицы 2 (cat_tov_img) сокращённая, но этого будет достаточно: ID | name | ext | vid | tovID 1 | _fghftyikyuikli | jpg | mini | 1 2 | _fhkjtryjfihyit | jpg | src | 1 3 | _dthyjkshtrg | gif | mini | 2 4 | _dfghdghjgh | gif | src | 2 Если так, как я выше написал нельзя, надо настоящие имена из таблицы 2 заменить на псевдонимы (если это возможно), ато иначе запись из таблицы 2 поле "name" заменит запись из таблицы 1 поле "name". Можно ли тогда их объединить следующим образом: Запрос извлекает все записи из таблицы 1 и все записи из таблицы 2, где tovID (поле таблицы 2)=ID (поле таблицы 1) и vid (поле таблицы 2)=mini. Вот что хотелось бы увидеть (использую записи приведённые выше): ID | name | iname (псевдоним поле name 2 таблицы) | ext | vid 1 | имя 1 | _fghftyikyuikli | jpg | mini 2 | имя 2 | _dthyjkshtrg | gif | mini Т.е к таблице 1 добавить несколько полей таблицы 2, а название некоторых заменить на псевдонимы (в нашем случае только 1 поле "name" на "iname"). Всем спасибо за участие. |
| Автор: ТоляМБА 6.1.2010, 10:34 | ||
|
| Автор: Ипатьев 6.1.2010, 11:25 |
| Весь вопрос в том, сколько картинок нам надо к каждому товару - одну или несколько... А вся пробема - в том, что люди, приходящие задать вопрос, не умеют сформулировать решаемую задачу целиком. Ведь что, казалось бы, проще, чем написать человеческим языком - "нужно вывести список соваров с одной картинкой к каждому" или "нужно то-то и то-то". Но нет - почему-то обязательно надо писать в терминах, смысл которых автор не понимает, еще и выкидывая половину информации, "это неважно". |
| Автор: MrImho 6.1.2010, 19:25 | ||
ТоляМБА спасибо, помогло, но сразу другой косяк, если у товара нет картинки, он не извлекает запись о нём, мне кажется это из-за записи:
Всё правильно, все логично, только запись товара должна извлекаться, даже если картинки нет. это условие глобально для всей записи или локально? Можно ли как-то подругому? |
| Автор: ТоляМБА 6.1.2010, 19:58 | ||
|
| Автор: MrImho 6.1.2010, 20:10 |
| ТоляМБА спасибо большое, Вы очень помогли. |