В C ++ объекты, выделенные в стеке (с помощью оператора Object object;
в блоке) будут жить только в пределах области, в которой они объявлены. Когда блок кода завершает выполнение, объявленный объект уничтожается. Если вы выделяете память на кучу, используя Object* obj = new Object()
, они продолжают жить в куче, пока вы не назовете delete obj
.
Я бы создал объект в куче, когда мне нравится использовать объект не только в блок кода, который объявил / выделил его.
Чтобы получить элементы в квитанциях
SELECT receipts_body.receipt_id,items.id,items.title FROM receipts_body
LEFT JOIN items ON items.id = receipts_body.item_id
ORDER BY receipt_id
Чтобы получить квитанции с MAJOR-категорией
SELECT receipts_body.receipt_id,items.id,items.title FROM receipts
LEFT JOIN items ON items.id = receipts_body.item_id
WHERE receipt_id IN (SELECT receipt_id FROM receipt_body WHERE item_id = 771013)
ORDER BY receipt_id
Чтобы получить квитанции с категорией MINOR
SELECT receipts_body.receipt_id,items.id,items.title FROM receipts
LEFT JOIN items ON items.id = receipts_body.item_id
WHERE receipt_id IN (SELECT receipt_id FROM receipt_body WHERE item_id = 771012)
ORDER BY receipt_id
receipts_main
, в которой хранится серийный номер каждой квитанции и временная метка создания. Таблицаreceipts_body
имеет внешний ключreceipt_id
, который указывает на таблицуreceipts_main
и сохраняет строки каждой квитанции с помощью внешнего ключаitem_id
, который указывает на таблицуitems
. Последний содержит идентификатор каждого элемента и его описание. – IVO GELOV 13 July 2018 в 10:52