Wyselekcjonowanie duplikatów

Odpowiedz Nowy wątek
2018-09-14 12:57
0

Witam,

Połączyły się dane z dwóch baz MySQL starej i nowej.
w rekordzie mam między innymi pole numer_telefonu oraz pole uwagi.
jeżeli sobie zrobię selekta żeby wylistował mi rekordy z uwagą wg zapisu "nowe" wyświetlą mi się wszystkie rekordy z nowej bazy.
Jeżeli chce sobie wylistować duplikaty numerów telefonu pokazując wszystkie z starej i nowej bazy to co muszę zrobić.
będzie mi się łatwiej pracować scalając te dane w jeden rekord.

Pewnie piszę niejasno bo jestem świeżakiem jeżeli macie pytanie to pytajcie postaram się bardziej nakreślić temat.

Pozostało 580 znaków

2018-09-14 13:09
0
SELECT stara.Tel, stara.Uwagi, nowa.Tel, nowa.Uwagi
FROM stara INNER JOIN nowa 
ON stara.Tel = nowa.Tel 
AND stara.Uwagi = nowa.Uwagi

O ile w ogóle dobrze zrozumiałem o co Ci chodzi.. :|

Pozostało 580 znaków

2018-09-14 13:21
0
BlackBad napisał(a):
SELECT stara.Tel, stara.Uwagi, nowa.Tel, nowa.Uwagi
FROM stara INNER JOIN nowa 
ON stara.Tel = nowa.Tel 
AND stara.Uwagi = nowa.Uwagi

O ile w ogóle dobrze zrozumiałem o co Ci chodzi.. :|

Cześć,

Dzięki za zainteresowanie i pomoc.
Z tego co zrozumiałem to piszesz o dwóch tabelach stara i nowa , jest niestety tylko jedna tabela (ludzie). telefony stare i nowe są w polu ( k_telefony ).
Da się zrobić Join z jednej tabeli ?

Pozdrawiam,
MM

Pozostało 580 znaków

2018-09-14 13:26
0

JOIN tbl AS nowa

Pozostało 580 znaków

2018-09-14 13:48
0

Zakładam, że masz góra 2 rekordy z bazy per numer, wówczas można tak

Na bazie, która wspiera funkcje analityczne można to zaimplementować np. tak:

select 
    numer,
    max(case when rn=1 then uwaga else null end) uwaga1,
    max(case when rn=2 then uwaga else null end) uwaga2
from 
    (select 
        row_number() over (partition by numer) rn,
        numer,
        uwaga
    from 
        tabelka
    ) aa 
group by numer;

To co jest na sqlfiddle jest trochę bardziej złożone, ale działa na MySQLu 5.6. Po prostu brak funkcji okienkowych został zrekompensowany joinem + countem...

Pozostało 580 znaków

2018-09-14 14:07
0
yarel napisał(a):

Zakładam, że masz góra 2 rekordy z bazy per numer, wówczas można tak

Na bazie, która wspiera funkcje analityczne można to zaimplementować np. tak:

select 
  numer,
  max(case when rn=1 then uwaga else null end) uwaga1,
  max(case when rn=2 then uwaga else null end) uwaga2
from 
  (select 
      row_number() over (partition by numer) rn,
      numer,
      uwaga
  from 
      tabelka
  ) aa 
group by numer;

To co jest na sqlfiddle jest trochę bardziej złożone, ale działa na MySQLu 5.6. Po prostu brak funkcji okienkowych został zrekompensowany joinem + countem...

Dzięki wielkie,

Chciałbym jednak uzyskać inny efekt. i przepraszam was że źle go opisałem. Postaram się wyjaśnić na przykładach.

coś jak :

`SELECT `id`, `imie`, `plec`, `k_telefony`, `data_r`, `uwagi`
FROM `ludzie`
WHERE `k_telefony` LIKE '%123456789%'
LIMIT 0 , 30

Gdzie wynikiem są dwa rekordy, jeden rekord z starej bazy a drugi rekord z nowej.

Moje pytanie jest takie czy da się wylistować resztę duplikatów o takim samym numerze telefonu.

W sieci znalazłem coś takiego

SELECT
    artist, release_id, count(*) no_of_records
FROM table
GROUP BY artist, release_id
HAVING count(*) > 1;

nie bardzo wiem jak to ugryźć.

Pozostało 580 znaków

2018-09-14 14:09
0
mr_jaro napisał(a):

JOIN tbl AS nowa

Cześć,

Możesz rozwinąć , nie rozumiem kontekstu.

Chodzi ci o przeniesienie wszystkich wyników z uwagami do nowej tabeli a później zrobienie joina ?

To był komentarz do mojego 1 posta i Twojej odpowiedzi/pytania. Możesz łączyć 1 tabele samą z sobą używając aliasów ... tak jak napisał mr_jaro. - BlackBad 2018-09-14 14:24

Pozostało 580 znaków

2018-09-14 14:21
0

Ok teraz jest jaśniej. Dobry przykład znalzłeś w sieci, u Ciebie będzie to coś jak:

SELECT  [ludzie]
      ,[tel]
      ,[uwagi]
  FROM [Ludzie]
 
   GROUP BY Ludzie,tel,uwagi HAVING COUNT(*) > 1
Ups :| ślepym .. - BlackBad 2018-09-17 07:16

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0