Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: znowu ja z relacjami wiele do wielu :)
Forum PHP.pl > Forum > Bazy danych > MySQL
dorotek
Mam tabelę TAB1 z polami: IDTab1, nazwa, tytul;
tabelę TAB2 z polami: IDTab2, wartosc;
tabelę TAB3 z polami IDTab1, IDTab2, której zadaniem jest połączenie powyższych.
Jak zastosować SELECT aby otrzymać informacje z tabel TAB1 i TAB2 zgodnie z przyporządkowaniem okreslonym w TAB3 ?
ActivePlayer
  1. SELECT pola
  2. FROM TAB3 LEFT JOIN TAB1 ON TAB1.IDTab1 = TAB3.IDTab1
  3. LEFT JOIN TAB2 ON TAB2.IDTab2 = TAB3.IDTab2
  4. WHERE warunki
  5. ORDER BY pole

mam nadzieje ze sie nie machnalem
dorotek
Dzieki bardzo!
Udało się co prawda trochę inaczej, ale to też wygląda dobrze smile.gif
Za wczesnie się ucieszyłam sad.gif
Gdy w TAB2 są 2 lub więcej rekordy odpowiadające rekordom z TAB1 to wszystko wypisuje mi się 2 lub więcej razy, a ja chcę raz rekord z TAB1 i wszystkie odpowiadajace mu w TAB2.
GROUP BY nie bardzo mi pomogło sadsmiley02.gif
SongoQ
@dorotek Na to nic nie poradzisz bo to iloczyn kartezjanski. Jesli masz wyszkie warunki poprawnie to co pisal @ActivePlayer to dostaniesz wszyskie dopasowania.
dorotek
No to mam biedę!
Czy pomoże mi ktoś tutaj czy muszę przejść na drugie forum, żeby dowiedzieć się czy i jak ten problem da się rozwiązać w php?
(na pewno się da)
ActivePlayer
Cytat
znowu ja z relacjami wiele do wielu smile.gif

i potem...
Cytat
ja chcę raz rekord z TAB1 i wszystkie odpowiadajace mu w TAB2.


to raczej nie relaca n do n tylko 1 do n
dorotek
Ja mówię tylko o fragmencie moich zachcianek
Jednemy elementowi z TAB1 można przyporządkować wiele z TAB2 ale też każdy z TAB2 może odpowiadać kilku elementom z TAB1.
Kwestia tego co mnie interesuje w tym zapytanu smile.gif
SongoQ
Przeciez juz pisalem, daje Ci wszystkie dopasowania rekordow.
Przyklad:

Tab1
aid | a1 | a2
1 | aaa| bbb
2 | bbb| cccc

Tab2
bid | b1 | b2
1 | ccc| ddd
2 | ddd| eeee

Przyjmijmy ze takie wpisy sa w tabeli:
Tab3
id | id_tab1| id_tab2
1 | 1 | 1
2 | 1 | 2
3 | 2 | 2

Teraz zapytanie:
  1. SELECT *
  2. FROM Tab1, Tab2, Tab3
  3. WHERE Tab1.id = Tab3.id_tab1 AND Tab2.id = Tab3.id_tab2


Wynikiem jest zlaczenie i dopasowanie wszystkich rekordow. Nie bede juz pisal co daje to zapytanie, mozesz sobie sprawdzic.

Tak juz jest jesli Ci sie to podoba czy nie. Polecam przeczytac przynajmniej jedna ksiazke o algebrze relacji, bo to sa podstawy.

--- Dodane
Jesli chcesz aby ktos Ci napisal rozwiazanie to na prostych przykladach podaj co chesz jako wynik zapytania.
dorotek
SongoQ jesteś potwornie nerwowy!
O relacjach wiem co nieco jak większość magistrów matematyki!
Już po raz drugi chcesz mnie potraktować bardzo niegrzecznie.
Czy masz obowiązek udzielania odpowiedzi?
Jeśli tak, to bardzo Cie przepraszam - poszukam bardziej przyjaznego forum.
Podałam dość prosty przykład trzech tabel i nazw pól ktore w nich występują, napisałam czego chcę.
W dalszym poście zapytałam też czy związków z php mogę szukać tutaj, czy powinnam zmienić forum - to zdaje się moje ostatnie pytanie, na które nie udzieliłeś odpowiedzi.
Zapytanie zaproponowane przez Ciebie przetestowałam sama już dawno - nie daje efektu, o który mi chodzi - to też chyba jest wyżej.
Proszę tych, którzy coś wiedzą na temat o pomoc, innych z tego obowiązku zwalniam.
Miłego dnia
smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.