![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 27.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Ugrzęzłem na dobre próbując się z tym uporać - po wielu godzinach walki zdecydowałem się poprosić o pomoc. Mam w uproszczeniu następującą sytuację: TABELA A: id_a | jakas_nazwa | user 1 | bbbbbb | 2 2 | aaaaaaaaaa | 3 3 | cccccccccccc | 2 4 | dddddddddd | 1 TABELA B: id_b | id_a | user 1 | 2 | 1 2 | 4 | 2 3 | 2 | 2 W tabeli A zapisane sa jakies obiekty. Kazdy z nich domyslnie skojarzony jest z jakims uzytkownikiem. Pojawila sie jednak koniecznosc (w specyficznych przypadkach) skojarzenia obiektu z tabeli A z dodatkowym uzytkownikiem lub uzytkownikami. Chciałbym zbudować zapytanie (w najprostszym wariancie) które zwróci mi np. id_a, id_b i jakas_nazwa obiektow skojarzonych z danym uzytkownikiem niezalezenie od tego czy informacja o uzytkowniku bedzie zapisana w samej tabeli A czy w dodatkowej B. Przyklad oczekiwanych wynikow dla usera 2: id_a | id_b | jakas_nazwa 3 | NULL | cccccccccc 4 | 2 | ddddddddd 2 | 3 | aaaaaaaaa Zalezy mi tez np. na sortowaniu wynikow po dowolnym polu (np. jakas_nazwa) i limitowaniu ich - dlatego sumowanie wynikow 2 zapytan i pozniejsze ich sortowanie/limitowanie w PHP nie wchodzi w gre (setki tysiecy rekordow...). Za pomoc bylbym baaaaardzo wdzieczny. pozdrawiam Greg |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 781 Pomógł: 256 Dołączył: 29.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 27.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
Dzieki, ale niestety to nie to.
Taka skladnia jaka podales wysypuje mi sie kompletnie ale to tylko przez maly detal. Zamiana USING (user=user) na USING (user) i jakas_nazwa na t1.jakas_nazwa spowodowalo, ze zapytanie sie wykonalo, ale podobny efekt juz udalo mi sie wczesniej uzyskac. Problem polega na tym, zapytanie to zwraca wyniki wg zasady: wszystkie rekordy z powiazanych tabel (tam gdzie user=user w tabelach) + wszystkie pozostale rekordy z tabeli A o ile nie maja one powiazanych rekordow w tabeli B. To czego mi w wyniku caly czas brakuje to rowniez oddzielnie te rekordy z tabeli A ktore maja jakies powiazania z B. Czyli gdybym na koncu tego zapytania dodal jeszcze WHERE t1.jakas_nazwa = 'aaaaaaaaa' to zwroci mi ono: id_a | id_b | jakas_nazwa | user 2 | 1 | aaaaaaaaaaa | 1 2 | 3 | aaaaaaaaaaa | 2 ale nie zwroci rekordu podstawowego z tabeli A 2 | NULL | aaaaaaaaaa | 3 Kurcze moze cos z UNION da sie zrobic. Czy mozna w jakis sposob posortowac w jednym zapytaniu (i wyciac przez LIMIT) wyniki 2 oddzielnych polaczonych przez UNION? pozdrawiam sorki ORDER BY t1.jakas_nazwa bylo na wyrost w moim wykonaniu - ORDER BY jakas_nazwa tez dziala - no ale niestety w sposob opisany powyzej - nie zwraca wszystkich potrzebnych wynikow... |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 00:05 |