Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Left Join a nadpisywanie kolumn
Kuziu
post
Post #1





Grupa: Zarejestrowani
Postów: 743
Pomógł: 0
Dołączył: 11.11.2003
Skąd: Toruń

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


  1. SELECT *
  2. FROM news LEFT JOIN users ON (news.user_id = users.id) ORDER BY time LIMIT 5


I teraz pojawia się problem ... nie mam dostępu do news.id bo zostało nadpisane przez users.id

Nie da się jakoś tak zrobić żeby dać " ... LEFT JOIN users id as user_id, nick ...." (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




Coś takiego w selecie musisz rozwiązać:
  1. SELECT news.id newsid ....

teraz do news.id odwolujesz się poprzez newsid
Go to the top of the page
+Quote Post
Kinool
post
Post #3





Grupa: Zarejestrowani
Postów: 560
Pomógł: 0
Dołączył: 15.07.2003
Skąd: Kwidzyn

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


a nie przypadkiem tak:
  1. SELECT news.news_id AS newsid ...
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




Może być i as, ale i bez as działa. Ja zawsze uzywam bez as (mniej kodu ) (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
Kuziu
post
Post #5





Grupa: Zarejestrowani
Postów: 743
Pomógł: 0
Dołączył: 11.11.2003
Skąd: Toruń

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


To to wiedziałem ...

chodziło mi o aliasy do tabeli dołaczanej a nie tej do której dołaczam ... czyli zeby tabela 'users' posiadała alias :|
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




  1. SELECT news.id newsid,users.id usersid ..
Go to the top of the page
+Quote Post
Kuziu
post
Post #7





Grupa: Zarejestrowani
Postów: 743
Pomógł: 0
Dołączył: 11.11.2003
Skąd: Toruń

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


Dobra bo ja czegoś nie kumam :|

  1. SELECT *
  2. FROM news LEFT JOIN users.id AS usersid,users.nick ON (news.user_id = users.id) ORDER BY time LIMIT 5


(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




Oj chyba tak. po left join dajesz nazwę tabeli, a nie pola w tabeli. POla określasz w select. Czyli jeśli chcesz, aby ci się pole users.id nazywalo inaczej niż id to dajessz w select users.id as usersid i git. (patrz mój post wyżej).

No chyba że ja nie kumam o co ci chodzi.

No ale masz konflikt nazw (dwa id), czyli więc to w selectie trzeba rozwiązać (patrz wyżej)
Go to the top of the page
+Quote Post
Kuziu
post
Post #9





Grupa: Zarejestrowani
Postów: 743
Pomógł: 0
Dołączył: 11.11.2003
Skąd: Toruń

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


Ok działa ...

  1. SELECT news.*, users.id AS userid, users.nick
  2. FROM news LEFT JOIN users ON (news.user_id = users.id) ORDER BY time


Poprostu myślałem, że nie moge po SELECT dać tabeli 'users' gdyż jest ona dołączana przez LEFT JOIN ... ale okazało sie, że mogę.

Teraz jeszcze sprawdze czy nie wyciąga czasem 2 razy tych samych kolumn ...

Dzieki za pomoc.

---------------------------------------
Edit:

W sumie to nie musze nawet pobierać users.id
  1. SELECT news. * , users.nick
  2. FROM news LEFT JOIN users ON ( news.user_id = users.id )
  3. ORDER BY time

user_id mam z newsów a z users pobiorę tylko autor'a i wszystko śmiga ok

(IMG:http://forum.php.pl/style_emoticons/default/guitar.gif)

Ten post edytował Kuziu 15.03.2005, 10:03:55
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.12.2025 - 18:17