Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MYSQL]Polączenie dwóch wyników, znajomości
palixmp
post
Post #1





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 19.07.2006

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


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ć??
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
skowron-line
post
Post #2





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


  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.


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
Derw
post
Post #3





Grupa: Zarejestrowani
Postów: 18
Pomógł: 1
Dołączył: 19.03.2009

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


a w takim przypadku nie trzeba przebudować tabeli by IDZnajomosci było loginem a nie liczbą?
Go to the top of the page
+Quote Post
skowron-line
post
Post #4





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


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


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
Derw
post
Post #5





Grupa: Zarejestrowani
Postów: 18
Pomógł: 1
Dołączył: 19.03.2009

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


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?
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 19:25