Home > Enterprise >  display multiple table value in one row in mysql php
display multiple table value in one row in mysql php

Time:09-28

i have a 2 table Table A and Table B i want to combine table in to one table.. i want the qurrey of the table.. i tried this querry..

SELECT COUNT(tablea.col_date)as totaljobs ,trans.collect_date, 
 ROUND(SUM(tablea.cloth_weight),2)as cloth_weight, 
 ROUND(SUM(tablea.cloth_amount),2) as clothes_amount, 
  ROUND(SUM(tablea.shoes_weight),2)as cloth_weight, 
 ROUND(SUM(tablea.shoes_amount),2) as clothes_amount,
 tablea.col_date,tablea.driver,tableb.fuel,tableb.expense FROM tablea INNER JOIN tableb ON tablea.driver=tableb.driver WHERE tablea.col_date BETWEEN '2022-09-20' AND date(now()) GROUP BY col_date,tableb.driver;

Table A:

id col_date clothe_kg clothe_amount shoes_kg shoes_amount driver
1 2022-09-20 50 25 30 15 john
2 2022-09-20 50 25 30 15 john
3 2022-09-20 30 15 40 20 john
4 2022-09-20 40 20 40 20 khan
5 2022-09-20 40 20 20 10 khan
6 2022-09-20 50 25 20 10 khan
7 2022-09-21 50 25 20 10 john
8 2022-09-21 30 15 40 20 john
9 2022-09-21 60 30 40 20 john
10 2022-09-21 40 20 40 20 khan
11 2022-09-21 30 15 40 20 khan
12 2022-09-21 20 10 50 25 khan
13 2022-09-22 50 25 50 25 khan
14 2022-09-22 60 30 50 25 khan
15 2022-09-22 70 35 50 25 john
16 2022-09-22 80 40 30 15 john

Table B:

id driver col_date fuel Van_number
1 john 2022-09-20 30 3312
2 khan 2022-09-20 30 3314
3 john 2022-09-21 0 3312
4 khan 2022-09-21 0 3314
5 john 2022-09-22 0 3312
6 khan 2022-09-22 0 3314

Output:

Sr driver col_date fuel Van_number sum(clothesweight) sum(clothesamount) sum(shoeesweight) sum(shoesamount)
1 john 2022-09-20 30 3312 130 65 100 50
2 khan 2022-09-20 30 3314 130 65 80 40
3 john 2022-09-21 0 3312 130 70 60 30
4 khan 2022-09-21 0 3314 90 45 90 45
5 john 2022-09-22 0 3312 110 55 100 50
6 khan 2022-09-22 0 3314 150 75 80 40

CodePudding user response:

You were on the right track with the code you tried, good job for adding that. You need to include all non-aggregated columns in the GROUP BY and make sure you use all key columns in your JOIN. In this case you only joined on driver, but you need to join on driver AND col_date. And there was a trans.collect_date in your example code, not sure where that comes from.

I think this will help you out:

dbfiddle

SELECT 
 tablea.col_date,
 tablea.driver,
 tableb.fuel,
 tableb.Van_number,
 ROUND(SUM(tablea.clothe_kg),2) as cloth_weight, 
 ROUND(SUM(tablea.clothe_amount),2) as clothes_amount, 
 ROUND(SUM(tablea.shoes_kg),2) as cloth_weight, 
 ROUND(SUM(tablea.shoes_amount),2) as clothes_amount 
FROM tablea 
INNER JOIN tableb 
  ON tablea.driver = tableb.driver 
  AND tablea.col_date = tableb.col_date
WHERE tablea.col_date BETWEEN '2022-09-20' AND date(now()) 
GROUP BY 
 tablea.col_date,
 tablea.driver,
 tableb.fuel, 
 tableb.Van_number;

CodePudding user response:

its very easy to fetch data from two table from database and display in single frontend table i hope you make connection to database.

fetch data from tables

$query1  = 'select * from A';
$query2 = 'select * from B';

$result1  = mysqli_query($con , $query1);
$result2  = mysqli_query($con , $query2);

if ($result1->num_rows > 0 && $result2->num_rows > 0 ) {
  
  while($Adata = $result1->fetch_assoc() && $Bdata = $result2->fetch_assoc()) {
 
  echo $Adata['columname'];
  echo $Bdata['columname'];


  }
 else {
  echo "0 results";
}
}
  • Related