Appending and Mapping of two tables in SQL - sql

I have two tables in the database, I want to merge and map the table 2
into table 1
by writing SQL query.
I don't know whether to apply joins or what? and then how to append the data.
note: Customer id is the common key in both tables.

A simple INNER JOIN would solve your problem --
SELECT T1.[Branch Code]
,T1.[CustomerID]
,T2.[Customer Name]
,T1.[Advised Amount]
FROM Table1 T1
INNER JOIN Table2 T2
ON T1.CustomerID = T2.CustomerID

Use Inner join..... U can write column name in place of *
Select * from Table1 as a
inner join Table2 as b on a.CustomerId = b.CustomerId

Related

Inner Join on Concat

I used this code in SQL Server to join two tables on unique values i made with concat.
My intention was to create unique values with concat function in both tables so I can join them on matching values.
Problem is that query written in this way never never executes (like some sort of infinite loop)
[Table inputs and result]
select t1.AAA, t1.BBB, t1.XXX, t2.YYY
from Table1 t1
inner join Table2 t2
on concat(t1.AAA, t1.BBB)= CONCAT(t2.AAA, t2.BBB)
why concat , this way you lose benefit of optimizer & index ,
you can join on two condition :
select select t1.AAA, t1.BBB, t1.XXX, t2.YYY
from Table1 t1
inner join Table2 t2
on t1.AAA= t2.AAA
and t1.BBB = t2.BBB
The query that you want is:
select t1.AAA, t1.BBB, t1.XXX, t2.YYY
from Table1 t1 inner join
Table2 t2
on t1.AAA = t2.AAA and t1.BBB = t2.BBB;
Then, if performance is a concern, you want an index on Table1(AAA, BBB) or Table2(AAA, BBB) or both. The columns can also be reversed in the indexes.

Multiple table combined PIVOT table using SQL

I have multiple tables in my data set. I need two columns from one table to be pivoted against one column in a different table.
Code:
SELECT DISTINCT
table1.name,
table6.count,
table6.car_name
From Master_Table
Inner Join table1
On Master_Table.ID_SEQNO = table1.ID_SEQNO
Inner Join table2
On table1.table1_ID_SEQNO = table2.table1_ID_SEQNO
Inner Join table3
On table2.ID_SEQNO = table3.ID_SEQNO
Inner Join table4
On table3.ID_SEQNO = table4.ID_SEQNO
Left Outer Join table5
On table4.CANDIDATE_ID_SEQNO = table5.CANDIDATE_ID_SEQNO
Left Outer Join table6
On table5.ID_SEQNO = table6.ID_SEQNO
ORDER BY table1.name
Output I need:
What I have now :
Master_Table : Has names , Date, Time of ownership etc
table1 has info on each name , adress phone number email etc
table2 has info like cars insurance etc so on... I have used id_seqno to join statements without which the code doesn't work.
Each table has a id_seqno with which I map it to every other table... I am modifying an existing code so pretty new to this.

SQL Server : removing duplicate column while joining tables

I have 4 tables with one column is common on all tables. Is there a way to create a view where I can join all tables by same column where I see the common column only once.
Let's say I have table1
Cust ID | Order ID | Product_Name
Table2
Cust_ID | Cust_Name | Cust_Address
Table3
Cust_ID | Cust_Acc | Acc_Type
Table4
Cust_ID | Contact_Phone | Cust_Total_Ord
Here is the code I use to join tables;
SELECT *
FROM table1
LEFT JOIN table2 ON table1.Cust_ID = table2.Cust_ID
LEFT JOIN table3 ON table2.Cust_ID = table3.Cust_ID
LEFT JOIN table4 ON table3.Cust_ID = table4.Cust_ID
I get all tables joined by I see Cust_ID from each table as below;
Cust ID| Order ID|Product_Name| Cust_ID| Cust_Name|Cust_Address| Cust_ID| Cust_Acc| Acc_Type|Cust_ID|Contact_Phone|Cust_Total_Ord
Is there a way to remove duplicate Cust_ID columns or do I need to write each column name in the SELECT? I have more than 50 columns in total so will be difficult to write all.
Sorry if it is a really dumb question, I have checked previous similar questions but couldn't figure out and thanks for help.
you have common columns on all tables so could use using(common_column) to remove duplicated columns.
SELECT *
FROM table1
LEFT JOIN table2 using(Cust_ID)
LEFT JOIN table3 using(Cust_ID)
LEFT JOIN table4 using(Cust_ID)
I hop that useful.
you need to select columns from three tables first and then make inner join like below
select
t1.cust_id, t1.col1, t1.col2,
t2.col1_table2, t2.col2_table2,
t3.col1_table3, t3.col2_table3
from
table1 t1
inner join
table2 t2 on t1.cust_id = t2.cust_id
join table3 t3 on t1.cust_id = t3.cust_id
Result as shown in below image
No, you cannot easily do what you want in SQL Server. In other databases, you can use the using clause.
One thing you can do is select the columns explicitly from all but the first table:
SELECT t1.*, . . .
FROM table1 t1 LEFT JOIN
table2 t2
ON t1.Cust_ID = t2.Cust_ID LEFT JOIN
table3
ON t1.Cust_ID = table3.Cust_ID LEFT JOIN
table4
ON t1.Cust_ID = table4.Cust_ID;
Perhaps more important than the column issue, I changed the join conditions. You are using LEFT JOIN, so the first table is the "driving" table. When you say t2.Cust_ID = t3.Cust_Id, this returns true only when there was a match to table2. In general, you want to use the columns from table1, because it is the first one in the chain of LEFT JOINs.

In SQL Server, How to join two table having different column name and different data row?

Suppose I have two tables T1 & T2. I want resulting output table as O1 with help of a SQL query
T1 {SName}
T2 {VName}
O1 {SName, VName}
It seems like you want a cross join of the two tables to include all combinations of rows in T1 and T2. Try this:
Select SName, VName From T1 Inner Join T2 On 1=1
The number of rows you will get is the product of the number of rows in T1 and T2 each.
if you're not joining on anything and want a table of all possible combinations:
select SName, VName
into O1
from T1 cross join T2
if you have a column to join on:
select SName, VName
into O1
from T1 inner join T2 on T1.col = T2.col
Select record from T1 and T2 based on filtering criteria and then insert record in table O1 , use below query to create table O1 and inserting those records.
INSERT INTO O1(SNAME, VNAME)
SELECT(T1.SNAME, T2.VNAME)
From T1 Inner Join T2 On 1=1 //i.e WHERE T1.id=T2.T1_id
use WHERE to filter records
there are several ways of doing it.one easy way is:
select T1.SName,T2.VName from T1,T2;
i don't know if i am right, you can use cross join.
if you have two tables Players and GameScores then
SELECT* INTO O1 FROM GameScores CROSS JOIN Players will return all records where each row from the first table is combined with each row from the second table. Which also mean CROSS JOIN returns the Cartesian product of the sets of rows from the joined tables.
to get the above result as
T1 {SName}
T2 {VName}
O1 {SName, VName}
(SELECT * FROM T1,T2) as O1;
will definitely work if both the table have single value if not then you can select the
Particular column like T1.SName,T2.VName

sql access inner join of 4 tables

I am new to sql and I am trying to join 4 tables together but just cant get the hang of it.
I am trying to do this with an inner join but I always get an syntax error with access.
SELECT *
from kdst,aufpos
inner join( artst inner join vert on kdst.vertreter = vert.vertnr)
on aufpos.artnr = artst.artnr;
This is my code but it does not work. I dont know what to do anymore, I hope someone can help me.
Build using the query design window
Then switch to sql view
Select *
From table1 t1
Inner join table2 t2 on t1.id = t2.fkid
Inner join table3 t3 on t1.id = t3.fkid
...
This is if you want to join multiple tables to the same parent table (table1). Fkid is the column of the foreign key field that refers to the primary key of the parent table.