加入并格式化结果集
Join and format a resultset
你好请帮我解决一个问题
SELECT DISTINCT A.titulo as 'Periodicas', B.titulo as 'No periodicas'
FROM publicacion A, Publicacion B, periodicas
WHERE A.idPublicacion=periodicas.Publicacion_idPublicacion
AND B.idPublicacion NOT IN (SELECT periodicas.Publicacion_idPublicacion FROM periodicas)
我想把期刊和非期刊出版物分开。
+--------------+---------------+
| Periodicas | No periodicas |
+------+-------+---------------+
| Publica 1 | Publica 5 |
| Publica 2 | Publica 5 |
| Publica 3 | Publica 5 |
| Publica 4 | Publica 5 |
+--------------+---------------+
因为我只有一篇文章,就是"No periodica"每次都重复。嗯,使用 DISTINCT 进行了测试,但我不能只显示一次。
数据:
Table "Publicacion"
+---------------+---------------+
| idPublicacion | titulo |
+---------------+---------------+
| 1 | Publica 1 |
| 2 | Publica 2 |
| 3 | Publica 3 |
| 4 | Publica 4 |
| 5 | Publica 5 |
+---------------+---------------+
Table 期刊:
+--------------+---------------------------+
| idPeriodica | Publicacion_idPublicacion |
+------+-------+---------------------------+
| 10 | 1 |
| 11 | 2 |
| 12 | 3 |
| 13 | 4 |
+--------------+---------------------------+
您正在尝试做一些非常自然的事情,即根据它们在另一个 table 中的存在对一个 table 的行进行分类。
但是您也在尝试以 SQL 的思维方式做一些不自然的事情,那就是横向而不是纵向组织报告。在大多数情况下,您会在报告程序中而不是在 SQL.
中执行此操作
这是一个查询 (http://sqlfiddle.com/#!9/9ff57/8/0),它将完成您项目的第一部分。
SELECT CASE WHEN b.titulo IS NULL THEN 'No Periodico' ELSE 'Periodico' END tipo,
a.idPublicacion,
b.idPeriodica,
a.titulo
FROM Pub a
LEFT JOIN Per b ON a.titulo = b.titulo
第二部分 MySQL 太难了。你需要做一个叫做枢轴的操作。问题是您没有自然的方式将期刊和非期刊层压在一起。
你好请帮我解决一个问题
SELECT DISTINCT A.titulo as 'Periodicas', B.titulo as 'No periodicas'
FROM publicacion A, Publicacion B, periodicas
WHERE A.idPublicacion=periodicas.Publicacion_idPublicacion
AND B.idPublicacion NOT IN (SELECT periodicas.Publicacion_idPublicacion FROM periodicas)
我想把期刊和非期刊出版物分开。
+--------------+---------------+
| Periodicas | No periodicas |
+------+-------+---------------+
| Publica 1 | Publica 5 |
| Publica 2 | Publica 5 |
| Publica 3 | Publica 5 |
| Publica 4 | Publica 5 |
+--------------+---------------+
因为我只有一篇文章,就是"No periodica"每次都重复。嗯,使用 DISTINCT 进行了测试,但我不能只显示一次。
数据:
Table "Publicacion"
+---------------+---------------+
| idPublicacion | titulo |
+---------------+---------------+
| 1 | Publica 1 |
| 2 | Publica 2 |
| 3 | Publica 3 |
| 4 | Publica 4 |
| 5 | Publica 5 |
+---------------+---------------+
Table 期刊:
+--------------+---------------------------+
| idPeriodica | Publicacion_idPublicacion |
+------+-------+---------------------------+
| 10 | 1 |
| 11 | 2 |
| 12 | 3 |
| 13 | 4 |
+--------------+---------------------------+
您正在尝试做一些非常自然的事情,即根据它们在另一个 table 中的存在对一个 table 的行进行分类。
但是您也在尝试以 SQL 的思维方式做一些不自然的事情,那就是横向而不是纵向组织报告。在大多数情况下,您会在报告程序中而不是在 SQL.
中执行此操作这是一个查询 (http://sqlfiddle.com/#!9/9ff57/8/0),它将完成您项目的第一部分。
SELECT CASE WHEN b.titulo IS NULL THEN 'No Periodico' ELSE 'Periodico' END tipo,
a.idPublicacion,
b.idPeriodica,
a.titulo
FROM Pub a
LEFT JOIN Per b ON a.titulo = b.titulo
第二部分 MySQL 太难了。你需要做一个叫做枢轴的操作。问题是您没有自然的方式将期刊和非期刊层压在一起。