/
UCS
/
sqlite_orm
Обзор
Документация
Войти
/
UCS
/
sqlite_orm
Код
Запросы
0
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
examples/multi_table_select.cpp
91 строка
3 KB
fnc12
changed PointerAlignment from Right to Left
21 ноя 2020, 20:38
21 ноя 2020, 20:38
1eaff43
Код
Авторство
О чём код?
/** * Example implemented from here http://sqlite.awardspace.info/syntax/sqlitepg05.htm */ #include <sqlite_orm/sqlite_orm.h> #include <string> #include <iostream> using std::cout; using std::endl; struct ReqEquip { int reqNumber; std::string requestor; std::string auth; std::string reqDate; }; struct ReqDetail { int reqNumber; int stockNumber; int quantity; double itemCost; }; int main(int, char**) { using namespace sqlite_orm; auto storage = make_storage("multi_table_select.sqlite", make_table("ReqEquip", make_column("ReqNumber", &ReqEquip::reqNumber, primary_key()), make_column("Requestor", &ReqEquip::requestor), make_column("Auth", &ReqEquip::auth), make_column("ReqDate", &ReqEquip::reqDate)), make_table("ReqDetail", make_column("ReqNumber", &ReqDetail::reqNumber), make_column("StockNumber", &ReqDetail::stockNumber), make_column("Quantity", &ReqDetail::quantity), make_column("ItemCost", &ReqDetail::itemCost))); storage.sync_schema(); storage.remove_all<ReqEquip>(); storage.remove_all<ReqDetail>(); storage.replace(ReqEquip{1000, "Carl Jones", "A. Robinson Mgr", "2007/10/30"}); storage.replace(ReqEquip{1001, "Peter Smith", "A. Robinson Mgr", "2007/11/05"}); storage.replace(ReqEquip{1002, "Carl Jones", "A. Robinson Mgr", "2007/11/06"}); storage.replace(ReqDetail{1000, 51013, 2, 7.52}); storage.replace(ReqDetail{1000, 51002, 4, .75}); storage.replace(ReqDetail{1000, 43512, 4, 1.52}); storage.replace(ReqDetail{1001, 23155, 1, 9.82}); storage.replace(ReqDetail{1001, 43111, 1, 3.69}); storage.replace(ReqDetail{1002, 51001, 1, .75}); storage.replace(ReqDetail{1002, 23155, 1, 9.82}); cout << endl; // SELECT ReqEquip.ReqNumber, ReqEquip.Requestor, ReqDetail.Quantity, ReqDetail.StockNumber // FROM ReqEquip, ReqDetail // WHERE ReqEquip.ReqNumber = ReqDetail.ReqNumber; auto rows = storage.select( columns(&ReqEquip::reqNumber, &ReqEquip::requestor, &ReqDetail::quantity, &ReqDetail::stockNumber), where(c(&ReqEquip::reqNumber) == &ReqDetail::reqNumber)); for(auto& row: rows) { cout << std::get<0>(row) << '\t'; cout << std::get<1>(row) << '\t'; cout << std::get<2>(row) << '\t'; cout << std::get<3>(row) << '\t'; cout << endl; } cout << endl; // SELECT ReqEquip.ReqNumber, ReqEquip.Requestor, ReqDetail.Quantity, ReqDetail.StockNumber // FROM ReqEquip, ReqDetail // WHERE ReqEquip.ReqNumber = ReqDetail.ReqNumber AND ReqEquip.ReqNumber = 1000; rows = storage.select( columns(&ReqEquip::reqNumber, &ReqEquip::requestor, &ReqDetail::quantity, &ReqDetail::stockNumber), where(c(&ReqEquip::reqNumber) == &ReqDetail::reqNumber and c(&ReqEquip::reqNumber) == 1000)); for(auto& row: rows) { cout << std::get<0>(row) << '\t'; cout << std::get<1>(row) << '\t'; cout << std::get<2>(row) << '\t'; cout << std::get<3>(row) << '\t'; cout << endl; } return 0; }