Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL]Pobranie prostych danych z 2 tabel w 1 zapytaniu
Elber
post
Post #1





Grupa: Zarejestrowani
Postów: 381
Pomógł: 12
Dołączył: 9.07.2007

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


Witam, mam problem, bo nie radzę sobie jeszcze z pobieraniem danych z kilku tabel w jednym zapytaniu, a potrzebowałbym pobrać kilka rzeczy.
Mam tabelę
menu w której mam pola: menu_id name
oraz tabelę
content gdzie jest: content_id menu_id content

Jak pobrać w jednym zapytaniu wszystko z content tylko zamiast menu_id z content pobrać w jego miejscu nazwę z tabeli menu ?

Ten post edytował Elber 30.11.2011, 14:27:50
Go to the top of the page
+Quote Post
nospor
post
Post #2





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




LEFT JOIN - wiecej info masz w manualu nawet są tam przykłady, na których opisano to zjawisko.
Go to the top of the page
+Quote Post
Elber
post
Post #3





Grupa: Zarejestrowani
Postów: 381
Pomógł: 12
Dołączył: 9.07.2007

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


SELECT content.content, menu.name FROM content LEFT JOIN menu ON content.menu_id = menu.menu_id where content.content_id = "$id" limit 1

Tak jet dobrze (IMG:style_emoticons/default/questionmark.gif)
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




A działa? To dobrze.
NIe działa? To też dobrze, tylko jakiś blad masz, wiec pokaz blad zapytania.

ps:
nie: content.content_id = "$id"
a: content.content_id = $id
Ucz się dobrych nawyków
Go to the top of the page
+Quote Post
Niktoś
post
Post #5





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Chyba tak lepiej ,ale sprawdź:
Cytat
SELECT p.content, d.name FROM content p LEFT JOIN menu d ON p.menu_id =d.menu_id where p.content_id = "$id" limit 1

gdzie
p= Tabel1;
d=Tabela2;

p.content=kolumna content z tabeli1
d.name=kolumna name z tabeli2
Taki przykład.

Ten post edytował Niktoś 30.11.2011, 14:48:28
Go to the top of the page
+Quote Post
nospor
post
Post #6





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




Niktoś, a czym się różni Twoje od jego nie licząc nazewnictwa?

Czyżbys mial na mysli tylko aliasy? To tylko dla wygody a nie dla lepszości.
Go to the top of the page
+Quote Post
Niktoś
post
Post #7





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Cytat
content.content ,menu.menu

d.menu, p.menu
Lepiej chyba takie coś rozróżnić,jak mówiłeś dla wygody ale i także dla uniknięcia pomyłek, a tak poza tym aliasy służą do skracania nazewnictwa.
Z wiki:
Alias także AKA (A.K.A., a.k.a., aka lub a/k/a – skr. od ang. also known as – także znany jako) – alternatywna nazwa służąca do identyfikacji obiektów, ludzi itp. (pseudonim). Zwykle z aliasem związana jest funkcja polegająca na skróceniu i uproszczeniu nazewnictwa.

Ten post edytował Niktoś 30.11.2011, 15:02:31
Go to the top of the page
+Quote Post
nospor
post
Post #8





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




No i przecież elber to rozróżniał. Wyraźnie masz napisane:
content.content, menu.name
Jest rozróżnione? Jest.

Nie mówię, że aliasy są złe. Sam im zawsze używam, tylko nie mów ze ktos czegos nie rozróżnia bo zamiast aliasu podaje nazwe tabeli (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
Elber
post
Post #9





Grupa: Zarejestrowani
Postów: 381
Pomógł: 12
Dołączył: 9.07.2007

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


Najpierw zrobiłem bez aliasów a potem z (IMG:style_emoticons/default/biggrin.gif) bo za 1 razem nie wyczytałem jak zrobić alias (IMG:style_emoticons/default/biggrin.gif) Teraz już wiem i na przyszłość będę wiedział (IMG:style_emoticons/default/smile.gif) Dziękuję za pomoc (IMG:style_emoticons/default/smile.gif)
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: 16.09.2025 - 08:48