Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Połaczenie danych z dwóch stron w jednej tabeli.
ZaXaZ
post
Post #1





Grupa: Zarejestrowani
Postów: 285
Pomógł: 18
Dołączył: 30.01.2014
Skąd: <?=$_GET['city']?>

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


Chcę złączyć dane w tabeli `users` ktorych `nick`=`nick2` (czyt. niżej).

Jesli `nick` x doda do `nick2` -> y
a `nick` y doda do `nick2` -> x to je zlaczy w zapytaniu, jesli choc jeden nie podal drugiego to go nie wyswietli, zalezy mi na optymalnym zapytaniu.

Wrazie pytan prosze pytac.

@Refresh, prosze o przeniesienie jesli zly dzial.

Ten post edytował ZaXaZ 30.07.2014, 15:58:51


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
Pyton_000
post
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Może coś w tym stylu

  1. SELECT t1.nick FROM users t1 JOIN users t2 ON(t2.nick2=t1.nick) WHERE t1.nick2 = t2.nick

Dostaniesz nicki które są skorelowane ze sobą czyli pary
Go to the top of the page
+Quote Post
ZaXaZ
post
Post #3





Grupa: Zarejestrowani
Postów: 285
Pomógł: 18
Dołączył: 30.01.2014
Skąd: <?=$_GET['city']?>

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


zmieniłem na początku
  1. t1.nick AS nick, t1.nick2 AS nick2
ale nie wyswietla mi gdy probuje tak: $row['nick'] i $row['nick2']

edit: tzn przypisuje w while do zmiennej dane a po pętli robie if empty i tu sie if wykonuje pomimo ze sa dobrze rekordy.

Ten post edytował ZaXaZ 10.08.2014, 00:31:38


--------------------
Go to the top of the page
+Quote Post
Pyton_000
post
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Magia.. Pokazałbyś lepiej ten kawałek kodu
Go to the top of the page
+Quote Post
ZaXaZ
post
Post #5





Grupa: Zarejestrowani
Postów: 285
Pomógł: 18
Dołączył: 30.01.2014
Skąd: <?=$_GET['city']?>

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


Cytat(Pyton_000 @ 10.08.2014, 08:55:40 ) *
Magia.. Pokazałbyś lepiej ten kawałek kodu


złe kolumny połączyłem - już wyświetla tylko że tak:
"nick z nick2
nick2 z nick"

zamiast
"nick z nick2"
jak to zrobic?

O czym muszę poczytać żeby to zrobić? (powinno łączyć z dwóch stron ale wyświetlać tylko jeden z pary (zamiast dwoch tych samych w drugiej kolejnosci)) czy użycie PHP wchodzi w gre - żeby pomijało co drugi?

Choć chyba lepiej w sql wykonać, żeby mniej obciążało.

edit: a ma ktoś jakiś pomysł żeby co drugi obracało kolejność i tak by się DISTNICT? (Chyba że da się jakoś lepiej).

Ten post edytował ZaXaZ 11.08.2014, 16:43:25


--------------------
Go to the top of the page
+Quote Post
trueblue
post
Post #6





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


A jak teraz wygląda Twoje zapytanie?


--------------------
Go to the top of the page
+Quote Post
ZaXaZ
post
Post #7





Grupa: Zarejestrowani
Postów: 285
Pomógł: 18
Dołączył: 30.01.2014
Skąd: <?=$_GET['city']?>

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


Cytat(trueblue @ 11.08.2014, 20:19:42 ) *
A jak teraz wygląda Twoje zapytanie?


Tak jak pisałem, musiałem zmienić połączenie tabel (zamiast nicku to numer, bo druga kolumna mogla by sie zmienic i byc nieaktualna)

  1. SELECT t1.numer AS numer, t1.partner AS partner FROM users t1 JOIN users t2 ON(t2.partner=t1.numer) WHERE t1.partner = t2.numer


--------------------
Go to the top of the page
+Quote Post
trueblue
post
Post #8





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Nie jestem pewien, ale spróbuj:

  1. SELECT t1.numer AS numer, t1.partner AS partner,concat(least(t1.numer,t1.partner),'-',greatest(t1.numer,t1.partner)) AS tmp FROM users t1 JOIN users t2 ON(t2.partner=t1.numer) WHERE t1.partner = t2.numer GROUP BY tmp


--------------------
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: 20.08.2025 - 18:55