Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Warunkowe łączenie Tabel, LEFT JOIN
Dabroz
post
Post #1





Grupa: Zarejestrowani
Postów: 286
Pomógł: 0
Dołączył: 1.11.2003
Skąd: Poland, Płock

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


Mam powiedzmy 3 tabele, które wyglądają tak:

Kod
Table tTID
----------
int TID
int TYPE
varchar NAME

Table tTEXT
-----------
int TEXT_ID
int TID
varchar TITLE
text TEXT_TEXT

Table tIMAGE
------------
int IMAGE_ID
int TID
varchat TITLE
blob IMAGE_IMAGE


(tabele są czysto teoretyczne)

Jeżeli chce wyciągnąć dane z tych tabel na podstawie TID, mogę zrobić np. tak:

  1. SELECT s.TITLE FROM (tTEXT s LEFT JOIN tTID id ON s.TID=id.TID) WHERE id.NAME IN ("a","b")


Analogicznie w przypadku tabeli IMAGE

  1. SELECT s.TITLE FROM (tIMAGE s LEFT JOIN tTID id ON s.TID=id.TID) WHERE id.NAME IN ("a","b")


Chciałbym połączyć to w jedno zapytanie, ciągle korzystając z LEFT JOIN.
Czy można sformułować zapytanie tak, aby np. przy tTID.TYPE=0 wiązana była tabela tTEXT, a przy tTID.TYPE=1 tabela tIMAGE?


--------------------
Go to the top of the page
+Quote Post
halfik
post
Post #2





Grupa: Zarejestrowani
Postów: 259
Pomógł: 0
Dołączył: 17.05.2003
Skąd: Nysa

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


ja tam jakos szczegolnie dobry z BD nie jestem, ale uwazam ze w samym SQLu pod MySQLem nie.

ale mozesz pomieszac w smym phpie i odpowiednio ukladac zapytanie...


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


"Nie wiedziałem tylko, że Bóg też był na grzybach, gdy majstrował przy wszechświecie" (Janusz Wisniewski)
dev: gazeta.ie
Go to the top of the page
+Quote Post
Parti
post
Post #3





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 22.07.2004

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


Cytat(Dabroz @ 2004-08-30 14:16:14)
Chciałbym połączyć to w jedno zapytanie, ciągle korzystając z LEFT JOIN.
Czy można sformułować zapytanie tak, aby np. przy tTID.TYPE=0 wiązana była tabela tTEXT, a przy tTID.TYPE=1 tabela tIMAGE?

  1. SELECT ifnull(timage.title, ttext.title) FROM ttid LEFT JOIN ttext ON (ttid.tid = ttext.tid AND ttid.type = 0)
  2. LEFT JOIN timage ON (ttid.tid = timage.tid AND ttid.type = 1)
  3. WHERE ttid.name IN ('a', 'b')


Coś w tym stylu. Polecam przeczytać: Writing UNION Statements in MySQL 3.x

Ten post edytował Parti 31.08.2004, 14:45:01
Go to the top of the page
+Quote Post
Dabroz
post
Post #4





Grupa: Zarejestrowani
Postów: 286
Pomógł: 0
Dołączył: 1.11.2003
Skąd: Poland, Płock

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


Dzięki Parti. O czymś takim właśnie myślałem guitar.gif


--------------------
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: 19.08.2025 - 18:12