For at kombinere to forespørgsler i én tabel skal du bruge UNION
operation. Det kræver to resultatsæt og limer dem grundlæggende sammen.
Union har få begrænsninger, og det vigtigste er, at det er nødvendigt, at forespørgslerne har det samme antal kolonner.
I dine forespørgsler har du valgt forskelligt antal kolonner, credit_card_master
forespørgsler har hver 5 kolonner og PG_NetBanking_Charges
forespørgsler har 4 kolonner hver.
Ud fra hvad jeg kan se, gætter jeg på, at card_type
kolonne fra den første forespørgsel har ingen ækvivalent i den anden forespørgsel, så du kan omskrive den anden forespørgsel som:
SELECT card_name, card_type, charge_amount, B2C_Amount_type, PGM.PG_Type
FROM ...
WHERE ...
UNION
SELECT PGM.Payment_Gateway_Name, null, PGNBC.Online_DC_Charge_Amt,
PGNBC.Online_DC_Charge_type, PGM.PG_Type
FROM ...
WHERE ...
Bemærk også, at kolonnerne i resultatsættet vil tage navnene på kolonnerne fra den første forespørgsel, så du vil måske tilføje et kolonnealias for at få et mere meningsfuldt/generisk navn til kolonnen. Jeg tilføjer normalt også en "Kilde"-kolonne, der gør det muligt for mig at spore oprindelsen af rækken i foreningen, så min endelige forespørgsel ser sådan ud:
SELECT 1 as Source, card_name as Name, card_type as Type,
charge_amount as Ammount, B2C_Amount_type as AmmountType,
PGM.PG_Type as PG_Type
FROM ...
WHERE ...
UNION
SELECT 2, PGM.Payment_Gateway_Name, null, PGNBC.Online_DC_Charge_Amt,
PGNBC.Online_DC_Charge_type, PGM.PG_Type
FROM ...
WHERE ...
og resultatet vil have kolonnerne Source
, Name
, Type
, Ammount
, AmmountType
og PG_Type
, hvor Source
vil være 1 for rækker fra den første og 2 for rækker fra den anden forespørgsel.