[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Прошу помощи в фильтрации таблицы.
GET
Здравствуйте, такая задача.

Есть таблица А, в ней поле `n` tinyint(3) отвечающее за название детали. Всего названий около 100. В этом поле все хранится в цифре, а литерное описание в таблице деталей В, все как полагается. Строк в А около 100 тысяч.

При выборе из списка детали, т.е.
 WHERE `n`='95'
происходит фильтрация таблицы, в браузере показываются нужные строки с n=95.

Хочу сделать, чтоб в списке на странице были только те детали, которые зарегистрированы, в таблице А, а не все подряд, которые существуют в таблице В.

Выхода вижу два, либо:

1. При рисовании списка циклом из таблицы В каждый раз делать SELECT COUNT(*) FROM tabA WHERE `n`='1'..4..99. Т.е. проверять есть значение детали в таблице или нет, если есть то рисуем в селект если нет, то ничего не рисуем. Но наверное это будет сильно загружать сайт, несмотря на мгновенность COUNT(*) будет 100 запросов.

2. Попробывать вести таблицу С где считать занесенные значения в таблицу А по принципу счетчика, занесли + удалили -, но таблица эта может стать гигантской т.к. таких деталей может быть много.

Может есть у кого-то идеи, как это можно еще по другому сделать?

Спасибо.



Спустя 1 час, 37 минут, 37 секунд (9.05.2012 - 10:50) Oyeme написал(а):
Поставить unique index на колонку 'n' (таблицa A,если значения колонки n уникальны)

Здесь можно сделать обычный join.Вывести то что совпало из таблицы А и таблицы B.

Спустя 2 минуты, 31 секунда (9.05.2012 - 10:52) johniek_comp написал(а):
я бы сделал так

SELECT DISTINCT c.n
FROM `A` AS c
INNER JOIN `B` AS t ON
(t.n = c.n)
ORDER BY c.n


и не забудь про индексы когда с where работаешь

Спустя 1 час, 7 минут, 45 секунд (9.05.2012 - 12:00) GET написал(а):
Oyeme
не уникальны, но мысль понял

johniek_comp
точно!...попробую так!


Спасибо.


_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.