AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / 问题

Perguntas[duplication](dba)

Martin Hope
LimetaPeta
Asked: 2022-06-09 12:17:29 +0800 CST

Programa de TV recorrente do banco de dados TVGuide

  • 0

Estou tentando projetar o banco de dados TVGuide insira a descrição da imagem aqui

como você pode ver, um programa de TV pode ter muitos programas, assim como um programa pode ser reproduzido em vários programas de TV

isso tudo vai bem

O problema que estou tentando resolver é o que fazer quando o show está em várias datas, por exemplo, um filme está na BBC 1 em 04/04/2012 e eles o reproduzem novamente em 08/08/2012 agora eu teria duplicado filmes com datas diferentes, é possível reduzir isso de alguma forma, então eu teria um filme com muitas datas ou (um filme também pode ser reproduzido apenas uma vez) algo assim

Obrigado por Anwsering e Atenciosamente BTW: Estou usando o Toad data modeler 6.5 para projetar este banco de dados e aqui está seu design: https://www.mediafire.com/file/lek90uvy8pz9wr8/TVGuide.txp/file

duplication
  • 1 respostas
  • 26 Views
Martin Hope
IBot
Asked: 2022-02-18 06:21:49 +0800 CST

UPSERT com UPDATE na coluna variável dá erro "o comando não pode afetar a linha uma segunda vez"

  • 1

Ei, estou tentando inserir ou atualizar (se as restrições estiverem duplicadas) com base em um resultado da consulta, estas são a instrução create table:

CREATE TABLE IF NOT EXISTS public.inventory (
  inventory_id serial PRIMARY KEY,
  arrive_date date NOT NULL,
  arrive_location character varying NOT NULL,
  thing_type integer NOT NULL,
  quantity integer NOT NULL
);

CREATE TABLE IF NOT EXISTS public.preprocess_things (
  preprocess_id serial PRIMARY KEY,
  arrive_date date NOT NULL,
  arrive_location character varying NOT NULL,
  data jsonb NOT NULL,
  CONSTRAINT preprocess_things_arrive_date_arrive_location_bo_key UNIQUE (arrive_date, arrive_location)
);

Esta é a consulta upsert:

WITH result_query AS (
    SELECT DATE_TRUNC('day', arrive_date) AS date,
      arrive_date,
      arrive_location,
      thing_type,
      SUM(quantity) AS total_things
    FROM inventory
    GROUP BY date, arrive_location, thing_type
)
INSERT INTO preprocess_things (
    arrive_date,
    arrive_location,
    data
  )
SELECT r.date AS arrive_date,
  r.arrive_location,
  jsonb_build_object(r.thing_type, r.total_things)
FROM result_query r
ON CONFLICT (arrive_date, arrive_location) DO
UPDATE SET data = preprocess_things.data || EXCLUDED.data

As linhas result_query são:

date                   | arrive_location | thing_type | thing_count
2018-05-30 00:00:00-00 | location_00     |   3        | 2
2018-05-31 00:00:00-00 | location_00     |   3        | 8
2018-05-31 00:00:00-00 | location_00     |   4        | 7

Tentando inserir em preprocess_things, onde data é um jsonbtipo e o resultado esperado é:

id | arrive_date            | arrive_location | data
1  | 2018-05-30 00:00:00-00 | location_00     | { "3": 2 }
2  | 2018-05-31 00:00:00-00 | location_00     | { "3": 8, "4": 7 }
postgresql duplication
  • 1 respostas
  • 337 Views
Martin Hope
user2494430
Asked: 2021-11-08 05:48:40 +0800 CST

Excluir valores redundantes do conjunto de resultados

  • 0

Usando o MySQL Workbench eu consegui fazer um script de criação e inserção (veja todos eles abaixo).

Com o roteiro

SELECT abbr_Company, name_Company, ddate, turnover, name_Employee
FROM Profit
INNER JOIN Employee ON Employee.idEmployee = Profit.idEmployee
INNER JOIN Company ON Profit.idCompany = Company.idCompany
ORDER BY idCodeTurnover

Eu posso gerar o conjunto de resultados abaixo: conjunto de resultados

Pergunta : Como posso manipular com SQL o conjunto de resultados para ter valores duplicados não visíveis, por exemplo, tendo um conjunto de resultados como este: insira a descrição da imagem aqui

Criar roteiro

-- -----------------------------------------------------
-- Schema playautomatedb
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS playautomatedb DEFAULT CHARACTER SET utf8 ;
USE playautomatedb ;

-- -----------------------------------------------------
-- Table playautomatedb.Company
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS playautomatedb.Company (
  idCompany SMALLINT NOT NULL,
  name_company VARCHAR(45) NOT NULL,
  abbr_company VARCHAR(3) NOT NULL,
  PRIMARY KEY (idCompany),
  UNIQUE INDEX idCompany_UNIQUE (idCompany ASC) 
  );


-- -----------------------------------------------------
-- Table playautomatedb.Employee
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS playautomatedb.Employee (
  idEmployee TINYINT NOT NULL,
  name_Employee VARCHAR(45) NOT NULL,
  abbr_Employee VARCHAR(3) NOT NULL,
  PRIMARY KEY (idEmployee),
  UNIQUE INDEX idEmployee_UNIQUE (idEmployee ASC) 
);


-- -----------------------------------------------------
-- Table playautomatedb.Automaat
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS playautomatedb.Automate (
  idAutomate SMALLINT NOT NULL,
  type_Automate VARCHAR(45) NOT NULL,
  idCompany SMALLINT NULL,
  PRIMARY KEY (idAutomate),
  UNIQUE INDEX idAutomate_UNIQUE (idAutomate),
    FOREIGN KEY (idCompany)
    REFERENCES playautomatedb.Company (idCompany)
    );


-- -----------------------------------------------------
-- Table playautomatedb.Profit
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS playautomatedb.Profit (
  idCodeTurnover INT NOT NULL,
  ddate DATE NOT NULL,
  idEmployee TINYINT NOT NULL,
  turnover INT NOT NULL,
  idCompany SMALLINT NULL,
  PRIMARY KEY (idCodeTurnover),
    FOREIGN KEY (idEmployee)
    REFERENCES playautomatedb.Employee (idEmployee),
  CONSTRAINT idCompany_UNIQUE
    FOREIGN KEY (idCompany)
    REFERENCES playautomatedb.Company (idCompany)
);

INSERIR Script

use playautomatedb;

-- insert Company
INSERT INTO Company (idCompany, name_Company, abbr_Company) 
VALUES 
(1, 'Coffeeshop de Engel', 'CE'),
(2, 'Snackbar Vork', 'SV'),
(3, 'Kantine BV WSE', 'WSE'),
(4, 'Zwembad de Snip', 'ZS');


-- insert Employee 
INSERT INTO Employee (idEmployee, name_Employee, abbr_Employee)
VALUES
(1, 'Jan Hein', 'JHE'),
(2, 'Klaas Jansen', 'KJA'),
(3, 'Johan Bakker', 'JBA');


-- insert Automate
INSERT INTO Automate (idAutomate, type_Automate, idCompany)
VALUES
(21, 'F1_Racer', 1),
(23, 'Mega Crusher', 1),
(34, 'Photoplay', 1),

(22, 'F1 Racer', 2),
(37, 'Mega Crusher', 2),

(35, 'Photoplay', 3),

(36, 'Mega Crusher', 4),
(18, 'F1 Racer', 4);


-- insert profit
INSERT INTO Profit (idCodeTurnover, ddate, idEmployee, turnover, idCompany)
VALUES
(1, '2011-01-11', 1, 1542, 1),
(2, '2011-02-11', 2, 1653, 1),
(3, '2011-03-11', 1, 1482, 1),
(4, '2011-04-11', 3, 2018, 1),
(5, '2011-05-11', 2, 1503, 1),

(6, '2011-05-12', 2, 2035, 2),
(7, '2011-03-01', 2, 837, 3),
(8, '2011-06-02', 2, 912, 3),
(9, '2011-09-01', 1, 799, 3),

(10, '2011-04-11', 3, 1387, 4);
mysql duplication
  • 1 respostas
  • 33 Views
Martin Hope
Hannah Vernon
Asked: 2021-05-05 11:28:01 +0800 CST

Elimine linhas extras que se cruzam

  • 4

Eu tenho uma tabela de valores de geometria onde algumas linhas se cruzam com outras linhas.

Preciso de uma lista de linhas em que a geometria se sobreponha a outras linhas, mas gostaria que a lista fosse o mais concisa possível.

Aqui está a configuração:

USE tempdb;
DROP TABLE IF EXISTS dbo.t;

CREATE TABLE dbo.t
(
    n varchar(100) NOT NULL
    , i geometry NOT NULL
);

INSERT INTO dbo.t (n, i)
VALUES ('poly1', geometry::STGeomFromText('POLYGON ((1 2, 1 4, 1 5, 4 6, 1 2))', 4326))
     , ('poly2', geometry::STGeomFromText('POLYGON ((1 2, 1 3, 2 5, 4 6, 1 2))', 4326))
     , ('poly3', geometry::STGeomFromText('POLYGON ((7 9, 8 7, 9 6, 7 9))', 4326))

SELECT t1.n
    , t2.n
FROM dbo.t t1
    INNER JOIN dbo.t t2 ON t1.i.STIntersects(t2.i) = 1
WHERE 
    t1.n <> t2.n;

A saída se parece com:

n n
poli2 poli1
poli1 poli2

No entanto, eu gostaria de apenas uma única linha para brevidade. ou seja, porque poly1 se sobrepõe a poly2 e poly2 se sobrepõe a poly1, estou recebendo duas linhas retornadas onde gostaria de apenas uma, como em:

n n
poli1 poli2
sql-server duplication
  • 1 respostas
  • 67 Views
Martin Hope
rubengavidia0x
Asked: 2021-04-13 01:56:53 +0800 CST

SELECT DISTINCT em dados de espaço extra de uma única coluna (sem duplicatas)

  • 0

Olá estou tendo problemas com os dados desta coluna

cities
Charlotte
Cincinnati
Cleves
Columbus
Fairfield
Fresno
Los  Angeles -- HERE IS THE PROBLEM
Los Angeles
Madison
Manhatttan  Beach
New York
Orange
Palo Alto
Phoenix
Sacramento
San Francisco
Takoma  Park -- maybe this city must have problems also
Tarrytown
Valencia
Washington

Como posso filtrar esse valor, qual é a maneira mais fácil com o trim? eu fiz minha pesquisa, mas encontro instruções sql longas que não entendo se isso puder ajudar é um erro simples.

Esta é a consulta:

-- 3. Write a query that will list all the cities that have customers with a heading of Cities. Only
-- list each city once (no duplicates) and sort in descending alphabetical order.

select distinct customer_city as cities
FROM customers
ORDER BY customer_city ASC

-- left Los  Angeles
sql-server duplication
  • 2 respostas
  • 767 Views
Martin Hope
PaxPrz
Asked: 2021-03-15 22:04:07 +0800 CST

Postgresql Union: Não repita com base em apenas 1 coluna

  • 0

UNION filtra entradas duplicadas enquanto UNION ALL mantém duplicatas. Semelhante a esse cenário, considere este caso anológico, quero definir a união para verificar apenas a duplicação de coluna única.

SELECT id, 1 AS category FROM users UNION SELECT id, 2 FROM users_2;

Aqui eu quero rejeitar todas as entradas UNION id, 2e verificar a duplicação com base apenas em id .

RESULTADO:

id   |   category
------------------
100  |    1
101  |    1
...  |    ...
100  |    2   # Skip this as 100 is already present
201  |    2
....

ESPERADO:

id   | category
----------------
100  |   1
101  |   1
...  |  ...
201  |   2
postgresql duplication
  • 1 respostas
  • 290 Views
Martin Hope
gabtzi
Asked: 2021-03-12 05:30:02 +0800 CST

precisa de ajuda para criar uma consulta para detectar duplicatas em várias colunas

  • 0

tenho a seguinte tabela

create table catalog_product_entity_varchar
(
    value_id     int auto_increment comment 'Value ID'
        primary key,
    attribute_id smallint unsigned default 0 not null comment 'Attribute ID',
    store_id     smallint unsigned default 0 not null comment 'Store ID',
    entity_id    int unsigned      default 0 not null comment 'Entity ID',
    value        varchar(255)                null comment 'Value',  
)

Eu quero encontrar todos os entity_ids onde attribute_id = 86para o mesmo store_idonde o valueé o mesmo.

Por exemplo, para as colunas attribute_id, store_id, entity_id,value

86, 1, 1, mypath

é duplicado com

86, 1, 2, mypath

mas não é duplicado com

86, 2, 1, mypath

O resultado seria entity_id, store_id,value

Qualquer ajuda é apreciada.

select duplication
  • 1 respostas
  • 26 Views
Martin Hope
simply_sideways
Asked: 2020-05-06 08:33:01 +0800 CST

Se todos os atributos associados de uma chave primária pretendida forem idênticos, ela ainda é uma chave primária verdadeira?

  • -2

Vou começar com um exemplo. Se eu tiver uma persontabela com a chave primária substituta pretendida Id:

+----+------+------------+---------+
| ID | nome | DoB | SSN |
+----+------+------------+---------+
| 1 | João | 1901-01-01 | 111-11-1111 |
| 2 | Jane | 1902-02-02 | 222-22-2222 |
| 3 | João | 1901-01-01 | 111-11-1111 |
+----+------+------------+---------+

Nota Ids 1 e 3 têm os mesmos atributos; Ambos representam a mesma pessoa.

Agora, pelo que sabemos sobre a teoria por trás do que constitui uma chave primária, que acho que está bem resumida aqui :

  • A chave primária deve identificar exclusivamente cada registro.
  • O valor da chave primária de um registro não pode ser nulo.
  • O valor-chave primário deve existir quando o registro é criado.
  • A chave primária deve permanecer estável — você não pode alterar o(s) campo(s) da chave primária.
  • A chave primária deve ser compacta e conter o menor número possível de atributos.

Considere o primeiro marcador, " A chave primária deve identificar exclusivamente cada registro. " No meu exemplo, suponho que se cada um Idrepresenta ou não a exclusividade depende do que realmente deve ser considerado único. Um registro de banco de dados diferente? Sim. Uma pessoa diferente (o que os registros devem representar)? Não.

Assim, múltiplos Ids representam o que é funcionalmente o mesmo sujeito gerador dos dados, presentes em 2 registros. Uma espécie de "dois para um ID". Não li nada que aborde diretamente o cenário que meu exemplo ilustra, no que se refere ao que é ou não é um PK.

  1. Este exemplo viola a teoria por trás do que constitui uma chave primária?
    1. Se não, este exemplo ilustra uma violação de qualquer princípio maior de arquitetura de banco de dados, ou este conceito pode ser reduzido a algo tão simples como "duplicação de dados - limpe-o"?

Muito Obrigado.

primary-key duplication
  • 1 respostas
  • 35 Views
Martin Hope
boog
Asked: 2020-03-03 09:17:29 +0800 CST

Exibindo apenas 1 linha para cada valor distinto

  • -1

Este parece ser um problema que tenho com bastante frequência, mas ainda não descobri (não sou um dba). Estou executando uma consulta para um relatório que estou criando, mas o usuário não deseja que nenhuma linha duplicada seja exibida para o mesmo 'número do caso'.

Eu tentei "selecionar distinto" e "agrupar por", mas nenhum deles está mostrando os resultados como eu gostaria que fossem mostrados.

O problema é que o relatório consulta uma coluna que pode ter 2 valores possíveis diferentes, e queremos mostrar apenas os casos que correspondem a um desses valores, mas não queremos exibir um caso específico mais de 1 vez.

Aqui está a consulta:

SELECT cases.casenum, 
       sp_first_party(cases.casenum), 
       cases.matcode, 
       cases.open_status, 
       cases.date_opened, 
       cases.close_date 
FROM cases, 
     insurance 
WHERE (cases.casenum = insurance.case_num) 
  AND  cases.date_opened >= :start 
  AND cases.date_opened <= :end 
  AND (    insurance.policy_type = 'Liability' 
        OR insurance.policy_type = 'SUM') 
  AND insurance.date_settled is Null  
  AND (    cases.matcode like 'GPI' 
        OR cases.matcode like 'MVA' 
        OR cases.matcode like 'S&F') 
  AND cases.close_date is not NULL  

Isto é o que eu acredito ser a área do problema:

(insurance.policy_type = 'Liability' OR insurance.policy_type = 'SUM')

Um único "caso"/"número do caso" pode ter vários tipos de apólice de seguro... o que significa que eles podem ter responsabilidade ou SUM, ou ambos. E a saída do relatório está mostrando uma nova linha para cada instância de qualquer um desses tipos de seguro que aparecem.

Gostaríamos de mostrar apenas uma única linha por caso, independentemente de quantos/quais tipos de apólice de seguro são atribuídos ao caso... mas ainda mostrar apenas casos que correspondam a esse critério.

Eu tentei selecionar distinto, bem como agrupar por cases.casenum, o que estou fazendo de errado aqui?

Obrigado por ler!

PS- isso é para uma plataforma/aplicativo cms, mas é executado em t-sql (mesma sintaxe que mssql).

Aqui está um exemplo da saída - como você pode ver na coluna mais à esquerda, existem vários dos mesmos valores para a coluna "Número do caso". Isso ocorre porque existem vários seguros.policy_types diferentes para esse número de caso que atendem aos critérios. Embora ainda precisemos filtrar por esses tipos de política, não queremos ver uma linha extra para cada um.

resultado

sybase duplication
  • 1 respostas
  • 264 Views
Martin Hope
pdwhoward
Asked: 2020-02-13 08:53:17 +0800 CST

SQLite - Remova duplicatas em várias colunas

  • 0

Tenho a seguinte tabela:

C1 | C2 | C3
-------------
A | X | 1
A | Y | 2
B | X | 3
B | Y | 4

Quero desduplicar nas colunas 1 e 2 e selecionar o máximo da coluna 3. No caso, como as linhas 1 e 2 têm "A" na coluna 1, essas são duplicadas. Como as linhas 3 e 4 têm "B" na coluna 1, elas são duplicadas. Como as linhas 1 e 3 têm "X" na coluna 2, elas são duplicadas. Finalmente, como as linhas 2 e 4 têm "Y" na coluna 2, elas são duplicadas. Portanto, as primeiras quatro linhas seriam consideradas duplicadas e o resultado deveria retornar a linha 4, já que contém o máximo na coluna 3. Não consigo descobrir como desduplicar em várias colunas. Qualquer conselho seria apreciado.

sqlite duplication
  • 1 respostas
  • 743 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve