Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wybranie tylko niepowtarzających się wartości z tabeli
Forum PHP.pl > Forum > Bazy danych > MySQL
josephk
Witam,
Wertuję od czasu jakiegoś dłuższego internet w poszukiwaniu zapytania które wybierze mi tylko rekordy, w których dana wartość kolumny nie została wykorystana w innych rekordach. Wszędzie trafiam na SELECT DISTINCT ale to z ząłożenia jest dla mnie bezużyteczne jako, że pokaże mi wszystkie wartości wywalając duplikaty. Ja natomiast chcę wyciągnąć wszystkie wartości KTÓRE NIE POSIADAJĄ duplikatu i TYLKO te wartości wywalając te, które duplikaty posiadają - najlepiej w ogóle by było gdybym mógł dać warunek NIE ZAWIERA a nie NIE JEST RÓWNE jako, że dokładnie chodzi mi o wyciąganie rekordów z adresami email (VARCHAR) gdzie czasem w polu są dwa lub więcej adresów. Coś jak SELECT UNIQUE choc w MySQL nie ma takiego zapytania bo UNIQUE można użyć tylko przy tworzeniu tabeli.

Oczywiście mogę to zrobić w PHP+MySQL za pomocą pętli ale uważam, że nie po to są silniki baz danych żeby kodować to w PHP.

Moje pytanie do mądrzejszych ode mnie w MySQL brzmi:
Czy istnieje (i jeżeli tak to jakie) jedno zapytanie pozwalające wyciągnąć wartości, które się nie powtarzają (lub najchętniej nie zawierają) w innych rekordach.
KR2615
użyj GROUP
josephk
Ok analizując opcję agregacji można faktycznie wyciągnąć rekordy bez powtórzeń
  1. SELECT
  2. LOWER(TRIM(email)),
  3. COUNT(LOWER(TRIM(email))) AS liczba_powtorzen
  4. FROM
  5. klienci
  6. WHERE
  7. email LIKE '%@%' AND
  8. email LIKE '%.%'
  9. GROUP BY
  10. email
  11. HAVING
  12. liczba_powtorzen = 1


to już pół sukcesu smile.gif

To może nieco dalej - jak to zmodyfikować żebym mógł wywalić wszystkie rekordy których wartości są sobie równe ale i te które zawierają w sobie inne?
czyli np. mamy dwa rekordy z wartościami pola email:
1) email = 'filip@filip.pl'
2) email = 'wiola@filip.pl;filip@filip.pl'
i żeby w takim przypadku nie brało pod uwagę żadnego z nich w wynikach?
Pyton_000
Źle zaprojektowałeś BD i teraz się męczysz.
Nie trzyma się wielu wartości w jednej komórce.
josephk
"Źle zaprojektowałeś BD i teraz się męczysz.
Nie trzyma się wielu wartości w jednej komórce"

I nie odpowiada się też na niezadane pytania. Nie ja projektowałem tę bazę. I tak - teraz się męczę. Jeżeli masz coś konstruktywnego do powiedzenia w temacie zadanego przeze mnie pytania to chętnie posłucham. Komentarze na tematy inne zachowaj proszę dla potomnych, może będą stawiali tak bazy, że jak ktoś będzie po nich kończył robotę to się męczyć nie będzie.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.