mysql remove duplicate data if sequential - mysql

I have previously made a question here select only when different value and it has been answered.
Now my question is how to remove double data so that the usual select query can produce the desired data
For example I have this records:
id
name
price
1
book
5
2
lamp
7
3
lamp
7
4
book
5
5
book
5
the result I want is:
id
name
price
1
book
5
2
lamp
7
4
book
5

Related

Algorithm for splitting date according to new record

In my mysql database
I have to write stored procedure.
I have table DATE which has 4 Columns
Table: DATE
Sq number(auto generated) From_Date To_date value
2 20170112 20170115 3
3 20170116 20170220 5
4 20170221 20170301 7
and so on
so if I get data which has to be added to table
from and to as 20170119 and 20170201 and value 6
then my table should look like
Table:DATE
Sq number(auto generated) From_Date To_date value
2 20170112 20170115 3
3 20170116 20170118 5
4 20170221 20170301 7
5 20170119 20170201 6
6 20170202 20170220 5
is there any algorithm or any logic to implement this kind of situation and handle all other possibilities
Not an answer, but too long for a comment...
If it was me, I'd revise the question, e.g.
start_val end_val
3 5
6 11
What would be the effect of bringing the values 4 and 8 into this table?

Stop duplicated indexing

I am trying to stop duplicate entry's into my database (below). eg it will come up with an error message if the vechID, Collection date, and return date is the same. I am opening my table in design view and clicking indexes and then indexing the relevant fields. but it wont work let me and keeps saying no due to duplicate values. is this the correct method
Booking ID VechID CuID Collection date Return date
1 3 7 01/07/2017 10/07/2018
2 1 7 23/04/2017 16/05/2018
3 2 1 17/05/2017 28/05/2018
4 4 2 15/05/2017 20/05/2018
5 5 2 01/06/2017 24/06/2018
6 6 2 22/07/2017 29/08/2018
7 4 8 01/07/2017 15/07/2018
8 8 8 01/08/2017 20/08/2018
9 8 2 21/01/2017 20/01/2018
10 4 8 25/09/2017 02/10/2018
13 8 8 25/09/2017 02/10/2018
Yes, you need to create a unique index on the fields (vechID, Collection date, return date).
Of course you can't do that if you already have data in your table that violates this unique index.
Use the query wizard for Duplicate Search to find and delete them.

Edit product selling location using mysql

I'm building a e-Commerce platform (PHP + MySQL) and I want to add a attribute (feature) to products, the ability to specify (enable/disable) the selling status for specific city.
Here are simplified tables:
cities
id name
==========
1 Roma
2 Berlin
3 Paris
4 London
products
id name cities
==================
1 TV 1,2,4
2 Phone 1,3,4
3 Book 1,2,3,4
4 Guitar 3
In this simple example is easy to query (using FIND_IN_SET or LIKE) to check the availability of product for specific city.
This is OK for 4 city in this example or even 100 cities but will be practical for a large number of cities and for very large number of products?
For better "performance" or better database design should I add another table to table to JOIN in query (productid, cityid, status) ?
availability
id productid cityid status
=============================
1 1 1 1
2 1 2 1
3 1 4 1
4 2 1 1
5 2 3 1
6 2 4 1
7 3 1 1
8 3 2 1
9 3 3 1
10 3 4 1
11 4 3 1
For better "performance" or better database design should I add
another table
YES definitely you should create another table to hold that information likewise you posted rather storing in , separated list which is against Normalization concept. Also, there is no way you can gain better performance when you try to JOIN and find out the details pf products available in which cities.
At any point in time if you want to get back a comma separated list like 1,2,4 of values then you can do a GROUP BY productid and use GROUP_CONCAT(cityid) to get the same.

mysql how do I detect missing values from the sequence?

im making a url shortener and im using the id for my hash
but theres a problem with auto incre mysql
URL tabel
id short_hashbase62
1 1
2 2
3 3
4 4
6 6
7 7
8 8
12 c
the missing values are 5 and 9 10 11
question: how could i select the 5 with mysql? then the second select should be 9, and forth on.
there are some similar question but its to complex to understand;
Detect missing values in a (auto-incremented) sequence
Aligning sequences with missing values

MySQL query to convert a table into distinct column and other column count array? [duplicate]

This question already has an answer here:
Mysql query to select a distinct column and the count of a value in another column where column like distinct coumn?
(1 answer)
Closed 9 years ago.
My data table is as below:
ID WEEK RESULT
1 13 GOOD
2 13 BAD
3 13 GOOD
4 13 WORST
5 14 GOOD
6 14 BAD
7 14 WORST
8 15 BAD
9 15 WORST
I need a sql query to create an array as below:
WWEK GOOD_RESULT BAD_RESULT WORST_RESULT TOTAL
13 2 1 1 4
14 1 1 1 3
15 0 1 1 2
Can anyone please help me to find an appropriate mysql query?
SELECT
WEEK,
SUM(RESULT='GOOD') As GOOD_RESULT,
SUM(RESULT='BAD') As BAD_RESULT,
SUM(RESULT='WORST') AS WORST_RESULT,
COUNT(*) As TOTAL
FROM YourTable
GROUP BY
WEEK
Please see fiddle here.