L
L
lexstile2020-10-07 22:25:30
SQL
lexstile, 2020-10-07 22:25:30

Why SQL query returns duplicates?

Request:

SELECT 
    events.id, events.name as event_name, events.date_start, events.date_end, events.country_id, events.description, events.day_1, events.day_2, events.month_1, 
    events.month_2, events.year_1, events.year_2, events.is_present, links.links, images.images, countries.countries, clusters.clusters 
  FROM events
  LEFT JOIN event_to_country etc ON etc.event_id = events.id
    LEFT JOIN (
    SELECT countries.id, event_to_country.event_id, GROUP_CONCAT(countries.name) as countries
    FROM countries
    LEFT JOIN event_to_country ON countries.id = event_to_country.country_id
    GROUP BY event_to_country.event_id
  ) as countries ON events.id = countries.event_id
    LEFT JOIN (
    SELECT event_id, GROUP_CONCAT(link) as links
    FROM links
    GROUP BY event_id
  ) AS links ON events.id = links.event_id
    LEFT JOIN (
    SELECT event_id, GROUP_CONCAT(name) as images
    FROM images
    GROUP BY event_id
  ) AS images ON events.id = images.event_id
    LEFT JOIN keywords ON events.id = keywords.event_id
    LEFT JOIN (
    SELECT country_id as c_id, GROUP_CONCAT(name) as clusters
    FROM clusters
    GROUP BY c_id
  ) AS clusters ON countries.id = c_id
   WHERE (events.name LIKE 'test' || events.description LIKE 'test' || keywords.name LIKE 'test') AND (etc.country_id = 2 OR etc.country_id = 8)
    ORDER BY events.year_1 ASC
    LIMIT 30

Background: link .
5f7e1625b968d637061676.png

Answer the question

In order to leave comments, you need to log in

1 answer(s)
A
alexalexes, 2020-10-07
@lexstile

Display all properties of the selection - you will see the difference in the lines.

SELECT *
  FROM

We need unique strings - figure out how to rank them and cut off unnecessary ranking numbers.
If you are too lazy to parse, then use distinct, the sampling speed will suffer if there are a lot of rows and columns.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question