Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wszystkie pary z jednej tabeli bez powtórzeń
Forum PHP.pl > Forum > Bazy danych > MySQL
djszaki
potrzebuję pomocy, muszę z jednej tabeli wybrać wszytskie osoby i połączyć je w pary tak aby nie było powtórzeń, póki co udało mi się sparować ale nie daje rady wybrać bez powtórzeń tych samych par

select o1.id, o1.imie, o1.nazwisko, o2.id, o2.imie, o2.nazwisko from osoby o1 join osoby o2 where o1.id != o2.id

2 Ola Nowak 1 Jan Kowalski
3 Ewa Zdisanska 1 Jan Kowalski
4 Ela Oglowska 1 Jan Kowalski
1 Jan Kowalski 2 Ola Nowak
3 Ewa Zdisanska 2 Ola Nowak
4 Ela Oglowska 2 Ola Nowak
1 Jan Kowalski 3 Ewa Zdisanska
2 Ola Nowak 3 Ewa Zdisanska
4 Ela Oglowska 3 Ewa Zdisanska
1 Jan Kowalski 4 Ela Oglowska
2 Ola Nowak 4 Ela Oglowska
3 Ewa Zdisanska 4 Ela Oglowska
trueblue
  1. SELECT IF(o1.id_osoba>o2.id_osoba,o2.id_osoba,o1.id_osoba) AS o1_id_osoba,
  2. IF(o1.id_osoba>o2.id_osoba,o2.imie,o1.imie) AS o1_imie,
  3. IF(o1.id_osoba>o2.id_osoba,o2.nazwisko,o1.nazwisko) AS o1_nazwisko,
  4. IF(o1.id_osoba>o2.id_osoba,o1.id_osoba,o2.id_osoba) AS o2_id_osoba,
  5. IF(o1.id_osoba>o2.id_osoba,o1.imie,o2.imie) AS o2_imie,
  6. IF(o1.id_osoba>o2.id_osoba,o1.nazwisko,o2.nazwisko) AS o2_nazwisko
  7. FROM osoba AS o1 CROSS
  8. JOIN osoba AS o2
  9. WHERE o1.id_osoba<>o2.id_osoba
  10. GROUP BY o1_id_osoba, o1_imie, o1_nazwisko, o2_id_osoba, o2_imie, o2_nazwisko


lub:

  1. SELECT o1.id_osoba,o1.imie,o1.nazwisko,o2.id_osoba,o2.imie,o2.nazwisko
  2. FROM osoba AS o1
  3. INNER JOIN osoba AS o2 ON o2.id_osoba>o1.id_osoba

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.