Wyselekcjonowanie duplikatów

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.

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.. :|

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

0

JOIN tbl AS nowa

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...

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źć.

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 ?

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

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