Я нахожусь в ситуации, когда мой клиент посылает мне по электронной почте файл Excel с 50 крайне ненормализованными столбцами данных. Затем я экспортирую его в CSV и загружаю в MySQL - единую таблицу. Столбцы предназначены для разных ингредиентов (10 столбцов данных для каждого ингредиента - название, категория и т. Д.), А затем 40 различных столбцов для характеристик каждого ингредиента. Таким образом, у каждого ингредиента в таблице есть все эти 50 столбцов, хотя каждый столбец не относится к этому ингредиенту.
У меня вопрос, могу ли я создать SQL, который выбирает только заполненные характеристики для одного выбранного ингредиента и пропускает все остальные столбцы?
(Я знаю, что другой вариант - создать свой собственный CSV-парсер, который создал несколько таблиц, а затем написать вместо них SQL, но я хочу исследовать, как решить эту проблему в первую очередь. Если это невозможно, тогда мне просто нужно с этим столкнуться и собрать парсер; P)
Насколько я понял, это не исключает незаполненные столбцы (или содержащие "nei").
SELECT
IF(`Heving-vanlig-gjaerbakst` <> '' AND `Heving-vanlig-gjaerbakst` <> 'nei', `Heving-vanlig-gjaerbakst`, 'random') AS `test1`,
IF(`Frys-kort` <> '' AND `Frys-kort` <> 'nei', `Frys-kort`, 'random') AS `test2`
... and for the 38 other rows ...
FROM x
WHERE id = 123
И я бы предпочел не решать эту проблему в PHP-коде, пропуская пустые строки = P
Пример строки (сначала имена столбцов):
g1 gruppe ug1 undergruppe artnr artikkel beskrivelse status enhet ansvar prisliste Heving-vanlig-gjaerbakst Heving-soete-deiger Deig-stabilitet Smaksgiver Saftighet Krumme-poring Skorpe Volum Konservering Skjaerbarhet Frys-lang Frys-kort Kjoel Holdbarhet E-fri Azo-fri Mandler Aprikoskjerner Helmiks Halvmiks Base Konsentrat Utstrykning Bakefasthet Frukt-Baerinnhold Slippegenskaper Hindre-koksing Palmefri Fritering Smidighet Baking Kreming Roere Fylning Dekor Prefert Viskositet Cacaoinnhold Fet-innhold
100150 Bakehjelpemidler 100150200 Fiber/potetprodukter 10085 Potetflakes sekk 15 kg Egnet til lomper, lefser, brød og annet bakverk. B... Handel Sekk Trond Olsen JA xxx xxx xxx
Как видите, большинство столбцов здесь пустые. X, XX и XXX - это форма системы оценок, но для некоторых столбцов вместо содержимого «да» или «нет».
И, как я уже сказал, первые 10 столбцов содержат информацию об этом продукте, остальные 40 - это другие характеристики (и это те, с которыми я хочу работать для одного данного продукта).