Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> dynamiczny JOIN
kangur91
post 19.08.2010, 18:02:30
Post #1





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 27.07.2008

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


Witam,
mam następujący problem. Mam 3 tabele nazwijmy je TABELA1, TABELA2, TABELA3.

TABELA1
-id (int)
-ktora (varchar(30)) <-- tu zapisana jest nazwa tabeli dla której używam JOIN
TABELA2
-id
-name
TABELA 3
-id
-name

Przyklad:
  1. SELECT n.`ktora`, m.`name` FROM TABELA1 n JOIN n.`ktora` m WHERE n.`id` = 124;


Zależy mi na tym aby łączył mi tabelę podaną w TABELA1.id

Ktoś wie jak to zrobićquestionmark.gif

Naprawdę nikt nie wie??

Ten post edytował kangur91 17.08.2010, 19:48:57
Go to the top of the page
+Quote Post
erix
post 19.08.2010, 18:17:48
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Naprawdę nikt nie wie??

Nikt się nie wypowiada, bo robisz głupotę:
Cytat
TABELA2
-id
-name
TABELA 3
-id
-name


Do jednej tabeli + jakieś pole rozróżniające. Rozdzielanie na kilka tabel nie ma sensu.


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
gogabed
post 19.08.2010, 18:57:59
Post #3





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 25.04.2010

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


Witam,
mam niestety podobny problem sciana.gif
Problemem jest również z kodem php (męczę się i niestety tylko do jednej tabeli wstawia mi nazwę)

POMOCY!!!
Go to the top of the page
+Quote Post
kangur91
post 20.08.2010, 10:59:12
Post #4





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 27.07.2008

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


Dobrze. Może podam przykład:

Mam 3 tabele:
a) oceny - zawiera pole "za_co", "za_co_id" (np. za_co = test)
cool.gif zadania domowe - zewiera pole "przedmiotId"
c) testy - zaweira pole "przedmiotId"

To jak wyszukać wszystkie oceny o tym samym przedmiotId??
Go to the top of the page
+Quote Post
erix
post 20.08.2010, 11:16:19
Post #5





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Może jednak pokaż deklaracje tabel?


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
kangur91
post 20.08.2010, 11:33:36
Post #6





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 27.07.2008

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


Model
Go to the top of the page
+Quote Post
erix
post 20.08.2010, 11:42:35
Post #7





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




To nie możesz dać kolumny w stylu type rozróżnić po niej, czy test, czy homework? Tworzenie zduplikowanej, identycznej tabeli jest bez sensu.


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
wookieb
post 20.08.2010, 11:45:13
Post #8





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




W zapytaniach mysql nie da się dynamicznie podawać nazw tabel w zapytaniach.


--------------------
Go to the top of the page
+Quote Post
kangur91
post 20.08.2010, 11:47:07
Post #9





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 27.07.2008

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


Zgadza się. Tylko homework ma troche inne pola niz testy(na obrazku jest wersja uproszczona).

O nareszcie. Skoro nie można to ok. Dzięki wielkie
Go to the top of the page
+Quote Post
erix
post 20.08.2010, 12:56:27
Post #10





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Tylko homework ma troche inne pola niz testy(na obrazku jest wersja uproszczona).

No to na przyszłość nie pomijaj kluczowych informacji.


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
kangur91
post 20.08.2010, 13:51:41
Post #11





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 27.07.2008

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


Ok. Zapamiętam. Aczkolwiek, nie ma to większego znaczenia gdyż zależało mi na odpowiedzi.

Cytat
W zapytaniach mysql nie da się dynamicznie podawać nazw tabel w zapytaniach.
Go to the top of the page
+Quote Post
Noidea
post 20.08.2010, 13:56:01
Post #12





Grupa: Zarejestrowani
Postów: 226
Pomógł: 61
Dołączył: 20.08.2010

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


Tabele:
SUBJECTS
- id
- name

HOMEWORKS
- id
- subject_id
- title
- (...)

TESTE
- id
- subject_id
- title
- (...)

i zapytanie:
  1. SELECT s.id, s.name, h.title, 'homework' AS 'type'
  2. FROM homeworks h
  3. INNER JOIN subjects s ON ( h.subject_id = s.id )
  4. UNION
  5. SELECT s.id, s.name, t.title, 'test' AS 'type'
  6. FROM tests t
  7. INNER JOIN subjects s ON ( t.subject_id = s.id )


Tylko pamiętaj że liczba kolumn i ich typy w zapytaniach połączonych przez UNION muszą sobie odpowiadać. Jeśli z homeworks chcesz wyciągnąć 5 kolumn, a z tests 3, to zrób to osobnymi zapytaniami.


--------------------
Go to the top of the page
+Quote Post
erix
post 20.08.2010, 14:11:39
Post #13





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Aczkolwiek, nie ma to większego znaczenia

Ma. Wiele osób przychodzi tu z rozwiązaniami bezsensownymi, więc trzeba je wybijać (rozwiązania tongue.gif).

A to, że miałeś tam jeszcze jakieś pola -> było kluczowe.

Poza tym, jeśli chodzi o Twój temat -> możesz dać w jednej tabeli, stworzyć kolejną z polami charakterystycznymi dla homework i przez 1-1 elegancko sobie wyciągać. Żadnych komplikacji, nie trzeba tworzyć takich obejść, miejsce się nie zmarnuje (tak by było, gdybyś wrzucił całość w jedno, ale ustawiał nulle dla innego typu).


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
kangur91
post 20.08.2010, 15:48:55
Post #14





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 27.07.2008

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


ok. Wielkie dzięki za radę
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 - 06:13