Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Left join czy może coś innego?
psychol1986
post 28.03.2010, 19:41:08
Post #1





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 29.10.2008

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


Witam, właśnie jestem w trakcie pisania strony i mam taki mały kłopot? Mianowicie mam 3 tabele, jedna z galeria jedna z uzytkownikami i trzecia która łączy obie tabele, jest tak że do jednego zdjęcia może być przypisanych wielu użytkowników. I teraz zastanawiam się jak wyciągnąć te dane? Left join czy jest jakiś inny sposób? Jeżeli Left Join to proszę o jakiś sensowny przykład.
Go to the top of the page
+Quote Post
blooregard
post 28.03.2010, 19:48:00
Post #2


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




  1. SELECT co FROM userzy AS u
  2. LEFT JOIN zdjecia AS z ON u.id_usera = z.id_usera
  3. ORDER BY co_tam_chcesz


lub

  1. SELECT co FROM zdjecia AS z
  2. NATURAL LEFT JOIN userzy AS u
  3. ORDER BY co_tam_chcesz


Pierwsze z brzegu dwa przykładowe zapytania, nie idealne, ale byc może pomogą Ci naprowadzić się na własne rozwiązanie.


--------------------
Life's simple... You make choices and don't look back...
Go to the top of the page
+Quote Post
psychol1986
post 28.03.2010, 20:00:35
Post #3





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 29.10.2008

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


A natural co oznacza w drugim przykladzie?
Go to the top of the page
+Quote Post
blooregard
post 28.03.2010, 20:05:53
Post #4


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




Cytat
A natural co oznacza w drugim przykladzie?

Jeśli w obu tabelach będzie, przykładowo, istniało pole o nazwie id_usera, to sładnia NATURAL JOIN powoduje, że właśnie po tych polach będzie dokonywane złączenie i podawanie kryterium złączenia nie jest konieczne. Możesz wtedy tym zastąpić warunek w stylu LEFT JOIN tabela AS t ON t.klucz = inna.klucz

Cytat
The NATURAL LEFT JOIN of two tables is defined to be semantically equivalent to an INNER JOIN or a LEFT JOIN with a USING clause that names all columns that exist in both tables.

http://dev.mysql.com/doc/refman/5.1/en/join.html
Powód edycji: [blooregard]:


--------------------
Life's simple... You make choices and don't look back...
Go to the top of the page
+Quote Post
psychol1986
post 30.03.2010, 19:17:04
Post #5





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 29.10.2008

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


Super wielkie dzięki. Fajnie zasięgnąć wiedzy kogoś bardziej doświadczonego:)

Witam odnawiam swoje pytanie, jest ono trochę inne: stworzyłem taką sql:

  1. SELECT * FROM writers_photos AS w
  2. LEFT JOIN writerzy AS wr ON wr.id = w.idw
  3. LEFT JOIN gallery AS g ON w.idph = g.id


i tu mam pytanie jak wybrać z tabeli writerzy i gallery tylko okreslone pola?
Go to the top of the page
+Quote Post
Crozin
post 31.03.2010, 10:19:47
Post #6





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Zanim odpowiem... taką sql:, writerzy?

Po prostu dostosuj odpowiednio klauzurę SELECT:

  1. SELECT w.*, wr.abc, wr.def, g.ghi, g.jkl ...
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 Wersja Lo-Fi Aktualny czas: 19.07.2025 - 09:43