|
|
|
| Здравствуйте господа!
Помогите пожалуйста.
есть две таблицы
таблица catalog
id_cat - name - firm - id_rub
таблица firm
id_frm -f name
делаю запрос
SELECT * FROM catalog, firm WHERE catalog.firm = firm.id_frm AND catalog.id_rub='3' ORDER BY name
|
на выходе хочу получить список скажем товара определенной категории (в примере группа 3) с названием фирмы но ничего не показывает :(
делаю
SELECT * FROM catalog, firm WHERE catalog.firm = firm.id_frm ORDER BY name
|
показывает товар и название фирмы
делаю
SELECT * FROM catalog, firm WHERE catalog.id_rub='3' ORDER BY name
|
показывает все что есть в группе товара под номером 3, а мне нужно как в первом запросе. Где камень зарыт? или не поддерживает MySQLтакое? | |
|
|
|
|
|
|
|
для: easywind
(13.08.2009 в 23:25)
| | Многотабличный запрос - это всегда декартово произведение, т.е. было у вас две таблицы, каждая из которых содержит по 10 записей и по 5 столбцов - вы в результате многотабличной выборки получаете одну таблицу из 100 записей и 10 столбцов. Чтобы получить 10 записей и 5 столбцов необходимо группировать значения и явно указывать названия столбцов. Последнее необходимо для того, чтобы предотвратить неоднозначность - у вас в обоих таблицах одинаковое поле - SQL не может выбрать нужное (ваш запрос скорее всего не срабатывает по этой причине). Попробуйте отталкиваться от следующего запроса
SELECT catalog.name AS product, firm.nam AS firmname
FROM catalog, firm
WHERE catalog.firm = firm.id_frm AND
catalog.id_rub='3'
GROUP BY catalog.id_cat
ORDER BY catalog.name
|
| |
|
|
|
|
|
|
|
для: cheops
(16.08.2009 в 19:52)
| | >Многотабличный запрос - это всегда декартово произведение, т.е. было у вас две таблицы, каждая из которых содержит по 10 записей и по 5 столбцов - вы в результате многотабличной выборки получаете одну таблицу из 100 записей и 10 столбцов. Чтобы получить 10 записей и 5 столбцов необходимо группировать значения и явно указывать названия столбцов. Последнее необходимо для того, чтобы предотвратить неоднозначность - у вас в обоих таблицах одинаковое поле - SQL не может выбрать нужное (ваш запрос скорее всего не срабатывает по этой причине). Попробуйте отталкиваться от следующего запроса
>
SELECT catalog.name AS product, firm.nam AS firmname
>FROM catalog, firm
>WHERE catalog.firm = firm.id_frm AND
> catalog.id_rub='3'
>GROUP BY catalog.id_cat
>ORDER BY catalog.name
|
Что-бы не было путаницы со столбцами у меня каждый столбец (в обоих таблицах) имеет уникальное имя.
Может я не правильно объяснил свою задачу. Мне нужно чтобы вторая таблица использовалась как справочник фирм. В первой таблице присутствует поле firm где имеется цифровое значение скажем "1" которое ссылается на id_frm во второй таблице. при выборе записей в выводе уже выводится не поле firm а fname из второй таблицы. и это работает если не указавать в WHERE дополнительный AND.
с андом никак. | |
|
|
|
|
|
|
|
для: easywind
(17.08.2009 в 21:37)
| | id_rub - текстовое или числовое поле? | |
|
|
|
|
|
|
|
для: GeorgeIV
(17.08.2009 в 21:54)
| | числовое. | |
|
|
|
|
|
|
|
для: easywind
(17.08.2009 в 22:13)
| | Пардон господа тема закрыта. просто текстовое поле catalog.firm содержало мало цифровых значений (не успел вставить) поэтому и не находило ничего. все очень просто.
Специально для Трианона вот теперь точно кто будет искать похожее он просто найдет ответ. без лишних ломаний головы... | |
|
|
|
|
|
|
|
для: easywind
(17.08.2009 в 22:17)
| | Ок. Если кто будет спрашивать, я отвечу: обращайтесь к easywind'у - он вам цифровых значений в таблицу насыпет. | |
|
|
|