sql server — база данных выбирает переполнение стека

У меня есть база данных с таблицей, которая имеет 10 элементов, и все эти элементы имеют суммы (item_one, item_one_amount). Так что это 20 строк в таблице.

То, что я хочу сделать, это связать эти 2 вещи в php, id товара с количеством.

Не уверен, как обойти мою проблему.
Является ли двойной foreach хорошей идеей?

Моя структура БД также может быть проблемой? Моя идея такова: у меня есть 10 разных комплектов. У каждого из них есть разные предметы с разным количеством упомянутых предметов. Элемент id_s я получаю из другой таблицы, в которой есть вся информация об элементе

My db:
FirstItem, SecondItem, ThirdItem, FourthItem, FifthItem,
SixthItem, SeventhItem, EighthItem, NinthItem, TenthItem,
FirstItemID, SecondItemID, ThirdItemID, FourthItemID, FifthItemID,
SixthItemID, SeventhItemID, EighthItemID, NinthItemID, TenthItemID,
first_item_amount, second_item_amount, third_item_amount, fourth_item_amount,
fifth_item_amount, sixth_item_amount, seventh_item_amount, eighth_item_amount, ninth_item_amount, tenth_item_amount
FROM Bundles

Моя попытка php:

foreach ($all_ids as &$item_id) {
if ($item_id == 0){
break;
}

foreach ($all_item_amounts as &$item_amount) {
//do something
if ($item_amount == 0) {
break;
}
}

}

По какой-то причине я застрял в петле.

-1

Решение

Используйте массив со всеми префиксами столбцов:

$nths = array('First', 'Second', 'Third', 'Fourth', 'Fifth', 'Sixth', 'Seventh', 'Eighth', 'Ninth', 'Tenth');

Затем выполните цикл по всем строкам результатов запроса и используйте вложенный цикл по этим префиксам, чтобы получить все столбцы в соответствующих группировках.

$results = array();
foreach ($all_rows as $row) {
foreach ($nths as $prefix) {
$results[] = array('item' => $row[$prefix . 'Item'],
'itemid' => $row[$prefix . 'ItemID'],
'amount' => $row[strtolower($prefix) . '_item_amount']);
}
}

Тем не менее, я предлагаю вам нормализовать ваш дизайн. Вместо 30 столбцов в каждой строке поместите каждую группу в отдельный ряд с bundleId это является общим для всех рядов одного и того же пакета.

CREATE TABLE Bundles (
BundleID INT,
ItemID INT, -- Foreign key to Items table
Amount INT,
PRIMARY KEY (BundleID, ItemID)
);

Этот синтаксис создания может быть не совсем правильным для SQL-сервера, мой опыт с MySQL.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector