我正在处理一个设计糟糕的桌子,有点像这样
create table (
entity_key integer,
tag1 varchar(10),
tag2 varchar(10),
tag3 varchar(10),
...
tag25 varchar(10)
);
Run Code Online (Sandbox Code Playgroud)
实体可以具有由非空列的数量指示的0个或更多个标签.标签都是相同的类型,应该有一个单独的"标签"表,我们可以加入主要实体.
但是,我坚持使用这个(非常大的)表.
我想运行一个查询,它给出了不同的标签和每个标签的计数.
如果我们有标准的"标签"表,我们可以简单地写
select tag, count(tag) from tags group by tag;
Run Code Online (Sandbox Code Playgroud)
但是,鉴于当前的表结构,我还没有为这个查询提出一个好的方法.
我正在尝试编写一个 Postgres 查询,它将json以特定格式输出我的数据。
JSON 数据结构
{
user_id: 123,
data: {
skills: {
"skill_1": {
"title": "skill_1",
"rating": 4,
"description": 'description text'
},
"skill_2": {
"title": "skill_2",
"rating": 2,
"description": 'description text'
},
"skill_3": {
"title": "skill_3",
"rating": 5,
"description": 'description text'
},
...
}
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我最终需要格式化数据的方式:
[
{
user_id: 123,
skill_1: 4,
skill_2: 2,
skill_3: 5,
...
},
{
user_id: 456,
skill_1: 1,
skill_2: 3,
skill_3: 4,
...
}
]
Run Code Online (Sandbox Code Playgroud)
到目前为止,我正在使用如下所示的查询:
SELECT
user_id,
data#>>'{skills, "skill_1", rating}' AS …Run Code Online (Sandbox Code Playgroud) 我正在开发一个ABAP PROGRAM,它从不同的SAP系统调用RFC.在调用RFC之前,有没有办法检查目标系统中是否存在RFC?
我知道不同的连接,但我想知道当我们运行这样的查询时使用了哪些连接:
select * from table1 t1, table2 t2
Run Code Online (Sandbox Code Playgroud)
例如,它是完全外连接还是自然连接?
另外,它在不同的数据库中是否具有独特的含义,或者都具有相同的含义?
更新:如果我们添加where子句怎么办?会一直这样吗inner join?
我正在尝试在PostgreSQL中执行以下sql指令,当我这样做时会发生以下错误:
表名"fat_unidades"指定不止一次".
任何帮助?
SELECT amb_recepcao.sequencial, amb_recepcao.cod_und_atend, atend.nome_fantasia as uni_atendimento
, amb_recepcao.cod_profissional, profissional.nom_pessoa as nom_profissional
, amb_recepcao.cod_atividade, fat_atividades.nom_atividade, amb_recepcao.tipo_pessoa
, amb_recepcao.cod_undpaciente, uni_pacie.nome_fantasia as nom_unidpaciente
, amb_recepcao.cod_paciente, pacie.nom_pessoa as paciente, amb_recepcao.cod_pessoa
, pessoas.nom_pessoa, amb_recepcao.cod_sintoma, amb_sintomas.nom_sintoma
, amb_recepcao.data_atendimento, amb_recepcao.hora_atendimento, amb_recepcao.motivos
, amb_recepcao.acoes_realizadas, amb_recepcao.senha_atendimento
FROM amb_recepcao
LEFT JOIN fat_unidades ON ( fat_unidades.cod_unidade = amb_recepcao.cod_und_atend )
LEFT JOIN entidades atend ON ( atend.cod_entidade = fat_unidades.cod_entidade )
LEFT JOIN fat_atividades ON ( fat_atividades.cod_atividade = amb_recepcao.cod_atividade )
LEFT JOIN entidades uni_pacie ON ( uni_pacie.cod_entidade = fat_unidades.cod_entidade ) …Run Code Online (Sandbox Code Playgroud) 假设我有一些PostgreSQL函数,如下所示:
CREATE FUNCTION insertSth() RETURNS void AS $$
BEGIN
INSERT INTO ...;
END;
CREATE FUNCTION removeSthAfterSelect() RETURNS TABLE(...) AS $$
BEGIN
SELECT id INTO some_id ...;
RETURN QUERY SELECT * FROM ...;
DELETE FROM ... WHERE id = some_id;
END;
CREATE FUNCTION justDeleteSth() RETURNS void AS $$
BEGIN
DELETE FROM ...;
END;
CREATE FUNCTION justSelectSth() RETURNS TABLE(...) AS $$
BEGIN
RETURN SELECT * FROM ...;
END;
Run Code Online (Sandbox Code Playgroud)
从我对PostgresSQL函数的理解insertSth,justDeleteSth并将justSelectSth以原子方式执行(?).所以并行执行它们不会搞砸任何东西.
但是,removeSthAfterSelect如果有并行执行,它可能会SELECT id INTO some_id …
在SQL Server中,我使用:
use database_name
Go
Select * from table_name
Run Code Online (Sandbox Code Playgroud)
在postgreSQL中,我仍然使用:
\connect database_name
Select * from table_name
========================
then error:
ERROR: syntax error at or near "\"
LINE 1: \connect database_name
^
********** Error **********
ERROR: syntax error at or near "\"
SQL state: 42601
Character: 1.
Run Code Online (Sandbox Code Playgroud)
为什么?能帮到我吗?谢谢.
我试图了解Postgre中的时间戳和时区。我想我明白了,直到我写这篇文章为止。
专注于“在时区之间转换”部分。它有两个例子。
(将默认时区配置考虑为UTC。)
例子1
db=# SELECT timezone('US/Pacific', '2016-01-01 00:00'); outputs 2015-12-31 16:00:00
Run Code Online (Sandbox Code Playgroud)
根据本文和我的理解,由于该函数的'2016-01-01 00:00'一部分timezone只是一个字符串,因此将其静默转换为默认的UTC。因此,'2016-01-01 00:00' UTC然后将其转换US/Pacific为timezone函数所要求的,即2015-12-31 16:00:00。
例子2
db=# SELECT timezone('US/Pacific', '2016-01-01 00:00'::timestamp); outputs 2016-01-01 08:00:00+00
Run Code Online (Sandbox Code Playgroud)
不好意思,我不明白为什么,那里的解释也无济于事。好的,函数的'2016-01-01 00:00'::timestamp一部分timezone不再是字符串,而是实际的时间戳。在什么时区?如果是UTC,则输出必须与示例1相同。因此,它将自动转换为US/Pacific?。那么输出是UTC吗?但为什么?我要求的 不是US/Pacific我timezone的UTC。
请说明timezone何时获取时间戳并被要求转换时间戳时的行为。谢谢。
postgresql timezone timestamp timezone-offset timestamp-with-timezone
我有一张名为 Parent 的父表。用作其他 3 个表 child1,child2,child3 的外键的父表的 id
我想删除该表并再次创建父表。我不想丢失子表中的数据。
我有DropDownButton一排两个 s。
DropdownButtonHideUnderline(
child: DropdownButton(
isExpanded: true,
value: item,
items: widget.items.map((item) {
return DropdownMenuItem(
value: item,
child: Text(
item.toString(),
);
}).toList(),
onChanged: widget.onChanged,
selectedItemBuilder: (context) {
return widget.items.map((item) {
return Align(
child: Text(
item.toString(),
),
alignment: Alignment.centerLeft,
);
}).toList();
}
)
)
)
Run Code Online (Sandbox Code Playgroud)
有没有办法拉伸菜单的宽度而不是保持按钮的大小?
编辑:
示例:Dart pad(感谢@Diwyansh;下拉菜单仅使用 UI 宽度的一半,而不是整个)