|
|
|
| Не могу решить, как будет лучше решить задачу:
Есть две таблицы.
Первая имеет такую структуру (упращенно):
id...|.....name..........|......town_id
1........Название 1..........1
2........Название 2..........1
3........Название 3..........2
4........Название 4..........1
Вторая имеет такую (связь таблиц id-id)
id | cat_id
1......1
1......2
2......1
3.......1
4.......1
4.......2
Есть у нас в скрипте id 1, и из первой таблицы надо выбрать все данные, которые имеют такой же town_id (это то ясно как :) ) и совпадают хотя бы по одному параметру cat_id из второй таблицы. | |
|
|
|
|
|
|
|
для: neadekvat
(20.05.2010 в 13:11)
| | неясно.
кто с кем совпадают?
Структуру таблиц (даже упрощенно) можно и в нормальном виде привести. | |
|
|
|
|
|
|
|
для: root
(20.05.2010 в 14:19)
| | Первая таблица:
CREATE TABLE IF NOT EXISTS `table1` (
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`town_id` mediumint(9) NOT NULL,
`name` text NOT NULL,
PRIMARY KEY (`id`),
KEY `town_id` (`town_id`)
)
Вторая таблица:
CREATE TABLE IF NOT EXISTS `table2` (
`id` mediumint(8) NOT NULL,
`cat_id` int(11) NOT NULL,
PRIMARY KEY (`id`,`cat_id`)
)
id в table1 - идентификатор определенной компании
id в table2 - идентификатор компании, соответствует id в table1
Но в table2 хранится информация о том (cat_id), к каким категориям компаний (банковские услуги, перевозка навоза и т.д.) относится данная компания (id). Как видно из дампа, id в table2 может повторяться (т.к. некоторые компании относятся к нескольким категориям).
Задача в том, что, имея id вытащить из table1 те компании, которые с имеющимся id относятся к тем же категориям. | |
|
|
|
|
|
|
|
для: neadekvat
(20.05.2010 в 13:11)
| | У меня получился такой запрос:
SELECT t1.name, t1.id
FROM table1 as t1, table2 as t2
WHERE t1.town_id = {$arr['town_id']} AND t1.id = t2.id
AND t2.cat_id IN (SELECT cat_id FROM table2 WHERE id = {$arr['id']})
|
Где $arr['id'] - известный id, а $arr['town_id'] - id города у известного id :) | |
|
|
|