SQL count(*) issues with join on multiple tables in mysql involving an outer join

Sunny

I have three tables, lets say t1, t2, t3 with columns as

 t1.c1, t1.c2, t1.c3 
 t2.c4, t2.c1, t2.c5
 t3.c6, t3.c4 

t1.c1, t2.c4 and t3.c6 are primary, autoincrements fields of their respective tables.

t2.c1 is a foreign key in t2 referring to t1.c1 in t1

t3.c4 is a foreign key in t3 referring to t2.c4 in t2

I want to get the following output for any given value of t2.c5 (say X)

SORRY - Mistake in output columns!

I want output to be

t2.c4, t1.c2, count

and not

t2.c1, t1.c2, count

where count is the number of records in t3 for the given value of t2.c5 and must be zero if no record exists where t2.c5=X and t3.c4=t2.c4

Can this be done in one select query?

Here is sample data:

Table: t1

  +------+-------+------+
  | c1   | c2    | c3   |
  +------+-------+------+
  |    1 | 11111 |  111 |
  |    2 | 22222 |  222 |
  |    3 | 33333 |  333 |
  +------+-------+------+

Table: t2

  +------+------+------+
  | c4   | c1   | c5   |
  +------+------+------+
  |    1 |    1 |   11 |
  |    2 |    1 |   11 |
  |    3 |    2 |   11 |
  |    4 |    2 |   12 |
  |    5 |    3 |   12 |
  |    6 |    2 |   12 |
  +------+------+------+

Table: t3

  +------+------+
  | c6   | c4   |
  +------+------+
  |    1 |    1 |
  |    2 |    1 |
  |    3 |    5 |
  +------+------+

For t2.c5=11, the output is

    +-------------------+
     t2.c4 | t1.c2| Count
    +-------------------+
      1    | 11111| 2
      2    | 11111| 0
      3    | 22222| 0
    +-------------------+

For t2.c5=12, the output is

    +-------------------+
     t2.c4 | t1.c2| Count
    +-------------------+
      4    | 22222| 0
      5    | 33333| 1
      6    | 22222| 0
Giorgos Betsos

Try this query:

SELECT t2.c4, t1.c2, COUNT(t3.c6) 
FROM t1
INNER JOIN t2 ON t1.c1 = t2.c1
LEFT JOIN t3 ON t3.c4 = t2.c4
WHERE t2.c5 = '11'
GROUP BY t2.c4, t1.c2

Output:

c4  c2  count
-------------
1   11111   2
2   11111   0
3   22222   0

Demo here

With this query:

SELECT t2.c4, t1.c2, COUNT(t3.c6) as count
FROM t1
INNER JOIN t2 ON t1.c1 = t2.c1
LEFT JOIN t3 ON t3.c4 = t2.c4
WHERE t2.c5 = '12'
GROUP BY t2.c4, t1.c2

output is:

c4  c2      count
-----------------
4   22222   0
5   33333   1
6   22222   0

Demo here

Эта статья взята из Интернета, укажите источник при перепечатке.

Если есть какие-либо нарушения, пожалуйста, свяжитесь с[email protected] Удалить.

Отредактировано в
0

я говорю два предложения

0обзор
Войти в системуУчаствуйте в комментариях

Статьи по теме

LINQ Left Outer Join Multiple Tables with Group Count and Row Concatenation

Функция SQL COUNT () и LEFT OUTER JOIN

LEFT OUTER JOIN 3 TABLES -SQL SERVER

Sql left outer join with three tables

MySQL Left Outer Join не возвращает значения NULL для COUNT (*)

используя RIGHT OUTER JOIN с COUNT (*)

mysql multiple COUNT () из нескольких таблиц с LEFT JOIN

MySQL LEFT OUTER JOIN выбирает наилучшее совпадение без изменения sql_mode

SQL Left Outer Join and Right Outer Join

MySQL LEFT OUTER JOIN не дает правильных результатов

MySQL OUTER Join с AS

Запрос MySQL: используйте LIMIT для одного столбца таблицы, имеющего OUTER JOIN

MySQL - бесконечный запрос на LEFT OUTER JOIN

MySQL LEFT OUTER JOIN имеет некоторую проблему с окончательными результатами

How to make a table left outer join of multiple tables

Преобразование устаревшего SQL Outer JOIN * =, = * в ANSI

Операторы и подзапросы SQL OUTER JOIN в SQLite

Join 3 tables with Count

SQL Update Join Multiple Tables (if field exists)

Mysql INNER JOIN после того, как LEFT OUTER JOIN

SQL Server: в чем разница между CROSS JOIN и FULL OUTER JOIN?

LEFT JOIN против LEFT OUTER JOIN в SQL Server

Mysql Left OUTER JOIN с подзапросом (wordpress)

MySQL: ограничение LEFT OUTER JOIN / левое внешнее соединение, где id = #

MySql Right Outer Join с предложением Where

Как правильно объединить несколько операторов WHERE и несколько предложений ON при эмуляции FULL OUTER JOIN в MySQL

Необходимо понять конкретное поведение LEFT OUTER JOIN в SQL SELECT

SQL joins with left outer join

Ошибка LEFT OUTER JOIN в SQL с предложением Where

TOP список

  1. 1

    Распределение Рэлея Curve_fit на Python

  2. 2

    How to click an array of links in puppeteer?

  3. 3

    В типе Observable <unknown> отсутствуют следующие свойства из типа Promise <any>.

  4. 4

    Как добавить Swagger в веб-API с поддержкой OData, работающий на ASP.NET Core 3.1

  5. 5

    Нарисуйте диаграмму с помощью highchart.js

  6. 6

    无法通过Vue在传单中加载pixiOverlay

  7. 7

    Отчеты Fabric Debug Craslytic: регистрация, отсутствует идентификатор сборки, применить плагин: io.fabric

  8. 8

    Статус HTTP 403 - ожидаемый токен CSRF не найден

  9. 9

    TypeError: store.getState não é uma função. (Em 'store.getState ()', 'store.getState' é indefinido, como posso resolver esse problema?

  10. 10

    ContentDialog.showAsync в универсальном оконном приложении Win 10

  11. 11

    В UICollectionView порядок меняется автоматически

  12. 12

    Merging legends in plotly subplot

  13. 13

    Elasticsearch - Нечеткий поиск не дает предложения

  14. 14

    Bogue étrange datetime.utcnow()

  15. 15

    Объединение таблиц в листе Google - полное соединение

  16. 16

    Single legend for Plotly subplot for line plots created from two data frames in R

  17. 17

    как я могу удалить vue cli 2?

  18. 18

    ViewPager2 мигает / перезагружается при смахивании

  19. 19

    Компилятор не знает о предоставленных методах Trait

  20. 20

    JDBI - В чем разница между @define и @bind в JDBI?

  21. 21

    проблемы с AVG и LIMIT SQL

популярныйтег

файл