Afternoon,
I have a couple of tables in mysql
The first holds the ticket information and status of ticket
The second holds the items and costs for each item.
Each ticket can have multiple items which are stored into the items table.
example table 1
Ticket id Manufacturer status
102 man-A 10
103 man-A 20
104 man-A 10
105 man-C 10
106 man-B 20
example table 2
Ticket id Item Price
102 item_a 100.00
103 item_a 100.00
103 item_b 110.00
103 item_c 115.00
104 item_c 115.00
105 item_b 110.00
106 item_a 100.00
106 item_c 115.00
now on a quick stats page i need to show.
Manufacturer Qty(status 10) Qty(status 20) Value
man-A 2 1 530.00
man-B 0 1 225.00
man-C 1 0 110.00
If there are no tickets with status 10 or status 20 i do not need to show that manufacturer.
I would like to do 1 mysql request to get the stats i need to show.
Many Thanks
Try this with join and using SUM()
SELECT
t1.Manufacturer,
SUM(t1.status =10) `Qty(status 10)`,
SUM(t1.status =20) `Qty(status 20)`,
SUM(t2.price) `Value`
FROM table1 t1
JOIN table2 t2 ON (t1.`Ticket id` =t1.`Ticket id`)
GROUP BY t1.Manufacturer
Fiddle Demo
Related
Selecting data from multiple rows into a single row
Quote_ws table
quote_ws_id quote_id gross tax
101 79 98.25 13.0
102 79 91.25 12.5
103 79 94.25 11.0
104 79 92.25 11.5
105 79 96.25 12.0
Section_table
section_id quote_id lsb(quote_ws_id) non_lsb(quote_ws_id)
1 79 101 null
2 79 102 103
3 79 104 105
I am trying to create a MYSQL query that will return gross and tax values from table "Quote_ws" based on lsb and non lsb values in 'Section' table.The results would be:
section_id quote_id gross tax
1 79 98.25 13.0
2 79 91.25 + 94.25 12.5+11.0
(lsb 102,non-lsb 103) (lsb 102,non-lsb 103)
3 79 92.25 + 96.25 11.5+12.0
(lsb 104,non-lsb 105) (lsb 104,non-lsb 105)
I am new to SQL. How can I do that? Please help me ??
SELECT
s.section_id,
s.quote_id,
(IFNULL(q_lbs.gross, 0)+IFNULL(q_non_lbs.gross, 0)) as gross,
(IFNULL(q_lbs.tax, 0)+IFNULL(q_non_lbs.tax, 0)) as tax,
FROM
Section_table s
LEFT JOIN Quote_ws q_lbs
ON q.quote_id = q.quote_id
LEFT JOIN Quote_ws q_non_lbs
ON q.quote_id = q.quote_id;
This is a hard one to put a title to so I apologise for ambiguity.
I have the following MySQL table (it's a Magento table):
id attr_id store_id entity_id value
----+---------+---------+------------+------------------------
1 45 0 173 Sale Gifts + Apartment
2 45 0 175 Sale Outerwear
3 45 1 175 Sale Outerwear
4 45 0 177 (null)
5 45 1 177 New Arrivals
6 45 0 178 New Tops
7 45 1 178 New Tops
As you can see, some of the rows have the same everything except store_id.
I want to do the following:
If a row with store_id = 0 has a duplicate row, but with store_id = 1 and different values (for example, rows 4 and 5 above), update the row with store_id = 0 to have the same value as the other.
Delete the row with store_id = 1
I know I will probably need a combination of both PHP and MySQL for this. I just don't know what the MySQL query would be.
Any help would be great!
EDIT
The end goal from the above table is the following
id attr_id store_id entity_id value
----+---------+---------+------------+------------------------
1 45 0 173 Sale Gifts + Apartment
2 45 0 175 Sale Outerwear
4 45 0 177 New Arrivals
6 45 0 178 New Tops
In order to retrive redundunt values having the same entity_id, you can do :
SELECT
*
FROM
magento m1, magento m2
WHERE
m1.attr_id=m2.attr_id
AND
m1.entity_id=m2.entity_id
AND
m1.id > m2.id
And for fixing null values, you will need to loop the above results and search for the null and replace it with the previous or next result.
I have following table
slno date productid companyid price
88 2017-05-17 1 1 65.27
87 2017-05-17 1 2 72.94
86 2017-05-17 1 3 73.13
85 2017-05-17 2 1 73.73
84 2017-05-17 2 2 67.71
83 2017-05-16 1 1 65.40
82 2017-05-16 1 2 72.49
81 2017-05-16 2 1 73.31
80 2017-05-16 2 2 67.17
Now I want price of product 1 for 2017-05-17 and difference of price from yesterday for same company id.
e.g:
getPrice( productid = 1, date='2017-05-17')
and this should return :
companyid , productid , date, price, difference from yesterday:
1, 1,'2017-05-17', 65.27, -0.13
2, 1,'2017-05-17', 72.94, 0.45
...
or it should return:
companyid , productid , date, price, yesterday price:
1, 1,'2017-05-17', 65.27, 65.40
2, 1,'2017-05-17', 72.94, 72.49
...
How to get this in PHP SQL?
You should consider doing this with php, because php can tell you yesterdays and today date. So get yesterdays and today date with php and use it to manipulate the sql query
so the query should look something like this
yesterdays Price:
select companyid, productid , date, price from table where productid='1' and date='$yesterday';
Today price
select companyid, productid , date, price from table where productid='1' and date='$today';
now you can get both values and subtract them with php to get the difference
I want find duplicate records in table
table_name: billing
there are 7 cols, but I am intrested in only 3 cols values.
I want find rows, where 3 cols (suite, comment, amount) values are similar
For example:
suite comment amount other col
11 44 0.00 88
11 44 0.00 33
17 48 1.00 11
17 48 1.00 35
17 48 1.00 21
Not particularly efficient, but if you don't need to do this quickly.
Select b.* from
(SELECT
Suite, comment, amount
FROM
YourTable
GROUP BY
Suite, comment, amount
Having count(1) > 1) a
Inner join
YourTable b
On a.suite = b.suite and a.comment = b.comment and a.amount = b.amount
I have 2 tables houses & availability - I want to find the min and max for the RENT field for each HOUSEID in AVAILABILITY this contains many records per JOUSEID , then UPDATE the HOUSES table fields MIN_RENT and MAX_RENT, the HOUSES table contains only one entry per HOUSE ID
HOUSES
houseid min_rent max_rent
121 40.00 90.00
122 50.00 80.00
123 40.00 100.00
AVAILABILITY
house_id date rent
121 01/01/12 40
121 01/02/12 50
121 01/03/12 60
121 01/04/12 90
122 01/01/12 40
122 01/02/12 50
122 01/03/12 60
122 01/04/12 80
123 01/01/12 40
123 01/02/12 50
123 01/03/12 60
123 01/04/12 90
Regards
Martyn
a faster solution
UPDATE
HOUSES H
,(
SELECT
house_id
,MIN( rent ) AS min
,MAX( rent ) AS max
FROM
AVAILABILITY
GROUP BY
house_id
) AS A
SET
min_rent = A.min
,max_rent = A.max
WHERE
H.house_id = A.house_id