Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MYSQL]Polączenie dwóch wyników, znajomości
Forum PHP.pl > Forum > Przedszkole
palixmp
Witam, mam problem z zapytaniem które wyświetla mi znajomych. Mam taką bazę:
  1. CREATE TABLE ZNAJOMOSCI (
  2. IDZnajomosci int NOT NULL AUTO_INCREMENT PRIMARY KEY,
  3. Zapraszajacy char(50) NOT NULL,
  4. Zaproszony char(50) NOT NULL,
  5. DataZaproszenia datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  6. StatusZnajomosci char (1) NOT NULL
  7. );


I teraz chcę wyciągnąć wszystkich znajomych. Storzyłem takie zapytanie:

  1. SELECT IDZnajomosci, Zapraszajacy, Zaproszony, DataZaproszenia, StatusZnajomosci FROM ZNAJOMOSCI WHERE (Zaproszony = 'root' AND StatusZnajomosci = 'A') OR (Zapraszajacy = 'root' AND StatusZnajomosci = 'A') ORDER BY IDZnajomosci


Próbowałem z UNION

  1. SELECT IDZnajomosci, Zapraszajacy, Zaproszony, DataZaproszenia, StatusZnajomosci FROM ZNAJOMOSCI WHERE Zaproszony = 'root' AND StatusZnajomosci = 'A' ORDER BY IDZnajomosci UNION SELECT IDZnajomosci, Zapraszajacy, Zaproszony, DataZaproszenia, StatusZnajomosci FROM ZNAJOMOSCI WHERE Zapraszajacy = 'root' AND StatusZnajomosci = 'A' ORDER BY IDZnajomosci



Ale jak teraz z tych wyników wyciągnąć tylko moich znajomych?? Bo czasem to ja jestem ZAPRASZAJĄCY, a czasem jestem ZAPROSZONY.

Umiał by to ktoś jakoś rozwiązać??
skowron-line
  1. SELECT * FROM znajomosci WHERE zapraszajacy = IDZnajomosci OR zaproszony = IDZnajomosci AND IDZnajomosci = 1

i w php sprawdzasz warunkiem czy jestes zapraszony czy zapraszajacy.
Lub w MySQL polecenie CASE lub IF.
Derw
a w takim przypadku nie trzeba przebudować tabeli by IDZnajomosci było loginem a nie liczbą?
skowron-line
Cytat(Derw @ 19.06.2009, 14:28:29 ) *
a w takim przypadku nie trzeba przebudować tabeli by IDZnajomosci było loginem a nie liczbą?

No wiesz lepje by było gdybyś tam ID trzymał powiązane z tabela w której przechowujesz użytkowników i dane na ich temat, bo w przypadku zmiany nick -a może być bałagan.

  1. SELECT * FROM znajomosci WHERE zapraszajacy = "root" OR zaproszony = "root"

Tak też można
Derw
Cytat(skowron-line @ 19.06.2009, 16:33:30 ) *
No wiesz lepje by było gdybyś tam ID trzymał powiązane z tabela w której przechowujesz użytkowników i dane na ich temat, bo w przypadku zmiany nick -a może być bałagan.

  1. SELECT * FROM znajomosci WHERE zapraszajacy = "root" OR zaproszony = "root"

Tak też można

Tylko o ile dobrze rozumiem autora tego tematu trzeba do zapytania wcisnąć jeszcze StatusZnajomosc = 'A'.


  1. SELECT * FROM znajomosci WHERE zapraszajacy = "root" OR zaproszony = "root" AND StatusZnajomosci='A'


Czyli teraz zwróci wszytskich których zaprosiłeś i tych którzy Cię zaprosili, i wszyscy się na to zgodzili bo rozumiem ze 'A' znaczy akceptacja?
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.