У меня есть таблица «Продукты», таблица «Отпечаток», таблица «Производитель» и таблица ингредиентов - вместе с другими таблицами.
В настоящее время я генерирую информацию и использую то, что называется "имя_файла", в качестве идентификатора (это назначенный FDA идентификатор из 36-40 цифр, который идет с каждым продуктом). То, что происходит сейчас - люди вводят несколько букв, а выпадающий список автозаполнения дает точное написание. Когда они нажимают SUBMIT, и это вызывает все записи, которые соответствуют. Если они выбирают общий продукт, он также включает в себя продукт «бренд» - если они вводят бренд, он также включает общий продукт.
Текущий дисплей выглядит следующим образом:
Sold by: Sold using Available Chemical name Data based
name Since: on company
report submitted:
C----- Health Lortab 2011-01-13 Hydrocodone Bitartrate etc 2010-12-07
R—Distributors Hydrocodone 2010-02-18 Hydrocodone Bitartrate etc 2009-12-17
Bitartrate
And Acetaminophen
C-- Health Vicodin 1983-01-07 Hydrocodone Bitartrate etc 2009-11-03
R—Distributors Hydrocodone 2010-07-30 Hydrocodone Bitartrate etc 2010-12-28
Bitartrate
And Acetaminophen
Это работает нормально. Я добавлю флажок слева, который позволит выбрать до 3 продуктов для сравнения и получения дополнительной информации.
СЛЕДУЮЩИЙ ШАГ:
После того, как они проверят 1, 2 или 3 элемента, я хочу отобразить их так:
«ВСЕ версии проверенного продукта содержат следующие ингредиенты:»
(те ингредиенты, которые являются общими для всех выбранных продуктов).
АЦЕТАМИНОФЕН, ЦЕЛЛЮЛОЗА, КУКУРУЗ, КРОСПОВИДОН, БИТАРТРАТ ГИДРОКОДОНА, МИКРОКРИСТАЛЛИЧЕСКИЙ, КРАСИВЫЙ И СТЕАРИЧНАЯ КИСЛОТА
(Показать ингредиенты в каждом продукте, НЕ объединенные всеми.
Конечный результат в КОЛОННАХ)
«Кроме того, КАЖДЫЙ из выбранных вами продуктов содержит следующие ингредиенты:«
COLUMN 1(Product 1) COLUMN 2 (Product 2) COLUMN 3 ( Product 3)
COPOVIDONE MAGNESIUM STEARATE CROSCARMELLOSE SODIUM
CROSCARMELLOSE SODIUM POVIDONE D&C YELLOW NO. 10
D&C RED NO. 27 SILICON DIOXIDE FD&C BLUE NO. 1
D&C RED NO. 30 POVIDONE
HYDRATED SILICA SILICON DIOXIDE
MAGNESIUM STEARATE SUCROSE
Конец дисплея
Таблица ингредиентов: 20 000 строк, 46 столбцов. Каждый ряд представляет собой отдельный препарат и содержит идентификатор, имя файла и затем ингредиенты. Каждый препарат (ряд) имеет различную комбинацию и количество ингредиентов. Неиспользуемые поля помечены как «пустые»;
столбцы ингредиентов в каждой строке:
id, имя_файла, 0_средний, 1_средний, 2_средний, 3_средний, 4_средний, 5_средний, 6_средний, 7_средний, 8_средний, 9_средний, 10_средний, 11_средний, 12_редн 43_гр.)
Вопрос в том, как и какой подход использовать для получения нужного мне формата ингредиентов. У меня есть опыт разработки систем регистрации, я достаточно хорошо разбираюсь в PHP и начинаю привыкать к PDO. Мой Sql-опыт минимален и, в основном, требует знания.
Я задавался вопросом, должен ли я сосредоточиться на монстре запроса MySQL или на стороне php. Я подумал о запросе, который дает ингредиенты, общие для всех 3, а затем вычитает этот результат из каждого отдельного списка лекарств, чтобы получить Часть II, но это выглядит довольно продвинутым mysql - тем более, что мне нужны данные для переключения со строки на макет COLUMN. Любая помощь?
Другая идея состояла в том, чтобы сделать запрос, объединяющий компоненты каждой строки, а затем выполнить процедуры массива на стороне php. Проблемы, мне трудно найти правильный код для извлечения ингредиентов из каждой строки, так как количество полей «NULL» по сравнению с «используемыми» полями варьируется в зависимости от каждой строки. (Как подсчитать нулевые столбцы в запросе PDO? Я попытался получить полное количество столбцов в таблице.)
Для меня это умник с несколькими шагами. Я ищу «волшебный» код MySql (если он существует) и / или предложения относительно того, какой подход (используя php, mysql, PDO) вы бы использовали.
Ваш интерес / помощь приветствуются!
Лора