Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] LEFT OUTER JOIN - dwukrotne złączenie dla jednej tabeli
kiler129
post
Post #1





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

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


Witajcie!
Mam sobie 3 tabele: articles, articles_categories oraz users i potrzbuję danych z wszytkich z nich na raz wink.gif Struktura wygląda tak: (dla uproszczenia pominę nieistotne pola w tabelach)
Tabela articles: id, category, user_add oraz user_mod.
Tabela articles_categories: id, name.
Tabela users: id, frname.

Obecnie używam takiego zapytania:
Kod
SELECT  `articles`.* ,  `users`.`frname`, `articles_categories`.`name`
FROM  `articles`
LEFT OUTER JOIN  `users` ON  `articles`.`user_add` =  `users`.`id`
LEFT OUTER JOIN  `articles_categories` ON  `articles`.`category` =  `articles_categories`.`id`
WHERE  `articles`.`id` = 30
LIMIT 1


Niestety nie mam pojęcia jak dopasować dwa pola (user_add i user_mod) i wyciągnąć pod innymi nazwami do jednej tabeli (users) wstydnis.gif
Z góry dzięki za pomoc.


--------------------
flexiCMS v2 [|||||||+--] 75% done
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
mortus
post
Post #2





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


  1. SELECT `arts_cats`.`name` AS cat_name, `arts`.`id` AS art_id, `u1`.`frname` AS art_author, `u2`.`frname` AS art_editor FROM `articles` AS `arts`
  2. LEFT JOIN `articles_categories` AS `arts_cats` ON `arts_cats`.`id` = `arts`.`category`
  3. LEFT JOIN `users` AS `u1` ON `u1`.`id` = `arts`.`user_add`
  4. LEFT JOIN `users` AS `u2` ON `u2`.`id` = `arts`.`user_mod`


Ten post edytował mortus 24.07.2011, 10:14:51
Go to the top of the page
+Quote Post
kiler129
post
Post #3





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

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


Hmm to nie do końca to co chce nistety - przyjrzyj się mojemu zapytaniu smile.gif


--------------------
flexiCMS v2 [|||||||+--] 75% done
Go to the top of the page
+Quote Post
nospor
post
Post #4





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




Chodziło o idee a nie dokładnie napisanie tobie rozwiązania...

Sednum sprawy jest to:
LEFT JOIN `users` AS `u1` ON `u1`.`id` = `arts`.`user_add`
LEFT JOIN `users` AS `u2` ON `u2`.`id` = `arts`.`user_mod`
czyli joinujesz dwa razy tabele users, ale używasz innych aliasów.
Dzięki temu potem w select możesz się dobrać do każdej tabeli i pobrać różne rzeczy
`u1`.`frname` AS art_author, `u2`.`frname` AS art_editor


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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 - 20:02