Как получить данные двух таблиц в одной? - PullRequest
0 голосов
/ 12 апреля 2019

В моей базе данных есть две таблицы: одна Syncbill, а другая Paymentmode в Syncbill. У меня есть несколько столбцов, которые представляют тип платежа, например, наличные, Paytm и другие Otherpayment1, OtherPayment2 и т. Д.

У меня есть еще одна таблица в моей базе данных, названная paymentmode, в которой имена других режимов оплаты определены как OtherPayment1, там определено как глоток.

Таблица синхронизации

Syncbill

Настольный режим оплаты

Paymentmode

Результирующая таблица / Вывод

Result

Я пытаюсь получить, если это делается по запросу

Проблема, с которой я сталкиваюсь:

  • Между этими двумя таблицами нет никакой связи
  • Отношение, которое я сделал, находится в таблице Paymentmode, есть четыре столбца с именами Position, Paymentcode, Paymentname и IsActive, где позиция определена как 1,2,3,4 и т. Д. , так что эти 1,2,3 ... и в другой таблице Otherpayment1, Otherpayment2 .. здесь 1,2,3 определяют способы оплаты
  • Теперь я пытаюсь получить данные из обеих таблиц, но вместо Otherpayment1 я хочу получить то, что находится в другой таблице (Paymentmode) в позиции 1

  • Как в таблице Paymentmode У меня есть столбец IsActive, поэтому я хочу получить только те PaymentNames, которые имеют IsActive='Y'

  • Я не понимаю, как я могу это сделать, я выкладываю этот, чтобы получить такой подход, как, как я могу это сделать, это можно сделать с помощью самого запроса, или я должен использовать серверный язык. использование Java-сервлетов в качестве языка на стороне сервера

Что я делал раньше:

Я пишу этот запрос:

    SELECT billdate,SUM(paytm) paytm,SUM(cash) cash,
    SUM(otherpayment1) Swiggy, SUM(otherpayment2) KB,SUM(otherpayment3) BigBasket,SUM(otherpayment4) 
    Zomato FROM syncbill WHERE a.BILLDATE BETWEEN '2018-08-05' AND '25018-08-10'

и я мой Java-сервлет. Я использую resultset.getstring, чтобы получить значения из базы данных, а затем сохранить их в List и затем преобразовать их в JSON, используя GSON, например,

while (resultSet.next()) {
            lhm = new LinkedHashMap<Object, Object>();
            Billdate = resultSet.getString("billdate");
            cash = resultSet.getLong("paytm");
            creditcard = resultSet.getLong("cash");
            swiggy = resultSet.getLong("Swiggy");
            kb = resultSet.getLong("KB");
            bigBasket = resultSet.getLong("BigBasket");
            zomato = resultSet.getLong("Zomato");

            lhm.put("Billdate", Billdate);          
            lhm.put("Paytm", paytm);
            lhm.put("Cash", cash);
            lhm.put("Swiggy", swiggy);
            lhm.put("Kb", kb);
            lhm.put("BigBasket", bigBasket);
            lhm.put("Zomato", zomato);

            mainList.add(lhm);
            str = gson.toJson(mainList);

        }

Но это не решение, так как я получаю KB, Swiggy все они жестко запрограммированы.

1 Ответ

1 голос
/ 12 апреля 2019

Это можно сделать с помощью 2 запросов sql

//to convert row on Paymentmode table into column name of syncbill table
    String q1 = "select concat('OTHERPAYMENT',p) as op from Paymentmode where IsActive=Y"; 
    rs = stmt.executeQuery(q1); 
    String str = ""; 
    while(rs.next()) {   
    str += rs.getString(1) + ","; 
    }
//to get desired result
    String q2 = "select Paytm, Cash," + str.substring(0, str.length()-1) +" from syncbill";

// below this execute q2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...