Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> porównanie pól w tabeli
isia
post
Post #1





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 5.05.2003

Ostrzeżenie: (0%)
-----


Witam...
Stawiam pierwsze kroki w SQLu i ćwiczę na bazie MySQL.
Umiem wyświetlić dane z bazy, posortować itp.
Mam natomiast problem i jakoś nie wiem jak go ugryźć.

Otórz potrzebuję wyświetlić z bazy te rekordy dla których powtarzają się pola.
Np. mam nazwisko, imie i numer jeśli to się powtarza to powinien wyświetlić.
Zupełnie nie wiem jak to ugryźć. Wiem, że tu nie piszecie skryptów za innych ale choć może by mnie ktoś naprowadził jak to zrobić

pozdrówko
isia
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
vieri_pl
post
Post #2





Grupa: Zarejestrowani
Postów: 406
Pomógł: 9
Dołączył: 24.07.2005
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


O to chodzi (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

  1. SELECT *
  2. FROM tabela WHERE pole = cos OR pole = cos OR pole = cos


Użyj Where (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #3





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@veri_pl czytaj ze z rozumieniem. "powtarza" jest różne od "równa sie"

gdy powtarza sie dane pole:
  1. SELECT *, count(*)
  2. FROM TABELA GROUP BY pole HAVING count(*)>1;


w twoim przypadku nie do konca rozumiem. maja sie powtarzac wszystkie naraz te trzy pola?
  1. SELECT *, count(*)
  2. FROM TABELA GROUP BY concat(nazwisko,imie,numer) HAVING count(*)>1;
Go to the top of the page
+Quote Post
isia
post
Post #4





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 5.05.2003

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 2006-01-13 15:31:50)
maja sie powtarzac wszystkie naraz te trzy pola?

tak... chodzi o wyłowienie zdublowanych danych w bazie.

pomodlę się za Emilkę

Ten post edytował isia 13.01.2006, 14:53:11
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




no to napisalem ci zapytanie do tego. zwroci ci ono te nazwisko imie i numer, ktore powtarza sie
Go to the top of the page
+Quote Post
isia
post
Post #6





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 5.05.2003

Ostrzeżenie: (0%)
-----


Fajnie działa - dzięki.
Muszę porównać tylko jedno pole ale powinny wyświetlać się wszystkie duplikaty.
Chodzi o to, że mam w bazie nazwiska,imiona i e-maile. Zdarza się, że email się powtarza bo np. wpisala sie matka i córka i maja tem sam adres - nie chce im wysylac dwoch informacji tylk jedna i musze sprawdzac.
Jak to zrobić?

np. jak jest więcej niż jeden Kowalskich to żeby wyświetlał wszystkich Kowalskich:

Kowalski Adam
Kowalski Andrzej

pozdr.isia

Ten post edytował isia 16.01.2006, 10:41:39
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




jesli twoja baza obsluguje podzapytania to:
  1. SELECT *
  2. FROM TABELA WHERE pole IN (SELECT pole
  3. FROM TABELA GROUP BY pole HAVING count(*)>1)
  4. ;
gdzie pole to nazwa pola po ktorym szukasz duplikatow
Go to the top of the page
+Quote Post
isia
post
Post #8





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 5.05.2003

Ostrzeżenie: (0%)
-----


Działa miodzio dzięki!
Takich zapytań skomplikowanych nigdy nie robiłam.
Czy jest gdzieś w sieci manual do SQLa... tylko nie każcie mi wyszukać w goglach - coś co jest warte polecenia.
Go to the top of the page
+Quote Post
SongoQ
post
Post #9





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

Ostrzeżenie: (0%)
-----


@isia Dla podstaw polecam http://www.w3schools.com/sql/

To co pisal nospor to juz raczej wynika z wlasnego doswiadczenia i wprawie w mysleniu jak dziala SQL.
Go to the top of the page
+Quote Post
FiDO
post
Post #10





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

Ostrzeżenie: (0%)
-----


A ja do podstaw polece jeszcze http://sqlcourse.com/intro.html . Chyba jedyny interaktywny kurs SQL'a, calkiem przyjemny.
Go to the top of the page
+Quote Post
janosick
post
Post #11





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 28.09.2006

Ostrzeżenie: (0%)
-----


Witam.

Odgrzebałem ten temat, ponieważ mam podobny problem - muszę wyświetlić rekordy w których powtarza się wartość jednego pola czyli zapytanie
  1. SELECT *
  2. FROM TABELA WHERE pole IN (SELECT pole
  3. FROM TABELA GROUP BY pole HAVING count(*)>1)
  4. ;
jest ok.

Ale niestety na serwerze nie mam mysql 5 tylko jest wersja 4.0.18 i nie jest to zależne ode mnie.
Na tej wersji zwraca mi błąd #1064. W manualu znalazłem że jest to
Kod
#Error: 1064 SQLSTATE: 42000 (ER_PARSE_ERROR)
Message: %s near '%s' at line %d
, ale niezbyt wiem jak to ugryźć.
Próbowałem wymyślić coś z join'em ale jako że jestem początkujący to niebardzo mi to idzie...

Dlatego proszę o pomoc we wskazaniu jak przerobić to zapytanie tak by było ok w starszym mysql.

Pozdrawiam

Ten post edytował janosick 28.09.2006, 17:30:42
Go to the top of the page
+Quote Post
giron
post
Post #12





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 28.09.2006

Ostrzeżenie: (0%)
-----


niektorych rzeczy nie da sie przeskoczyc, zwlaszcza jesli sa ograniczenia
w mysql'u 4.x nie zadasz pytania zlozonego
ten przypadek musisz rozbic na 2 zapytania
pierszym wyciagnij jakie wartosci Ci sie powtarzaja a drugim rekordy z tymi wartosciami
np
select pole from Tabela group by pole having count(pole) > 1;
a nastepnym zapytaniem
select * from Tabela where pole in (x,y);

jesli bedzie mialo byc w tej tabeli sporo rekordow to przydalby sie klucz na takim polu
to juz sprawa miejsca i optymalizacji

pozdrawiam (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 16:44