![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 1 333 Pomógł: 137 Dołączył: 25.03.2008 Skąd: jesteś?? Ostrzeżenie: (0%) ![]() ![]() |
Trochę ułatwię sprawę na potrzeby stwierdzenie "czego najlepiej użyć", mamy następujące tabele:
PAGE - id - idStatus - name - value STATUS - id - statusName Jak najlepiej pobrać całość w jednym zapytaniu? 1. Jojn w zapytaniu 2. Coś takiego - http://blog.wilgucki.pl/2010/11/zenddb-i-relacje.html tutaj wydaje mi się że jest to bardziej do relacji 1:n 3. Pod zapytanie Mam takie trzy możliwości, w każdej jest to do wykonania, ale nie wiem która z nich będzie najbardziej poprawna przy relacji 1:n wybrał bym #1 lub #2 w zależności od skomplikowania (z przewagą dla #2) a tutaj za skarby nie mogę się zdecydować, problem może nawet nie zendowski więc jak ukochani moderatorzy postanowią przenieść nie pogniewam się. (I nie ma tutaj sarkazmu :]) -------------------- Mój blog - o wszystkim i niczym ale zazwyczaj związane z informatyką! ;-)
Githube Usługi spawalnicze i monterskie | Park linowy Lublin i Okunince |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Niestety pod względem wydajności najsłabiej wypadną relacje tworzone przez ZF, a to dlatego, że wydobycie statusów dla każdej strony to w tym przypadku wykonywanie odrębnych zapytań SELECT dla każdej ze strony. Potwierdzeniem niech będzie odpowiedni fragment kodu (linia 54):
W osobnym temacie natomiast toczymy dyskusję na temat wyższości JOIN-ów nad PODZAPYTANIAMI, czy też odwrotnie i moje wstępne testy wykazały, że złączenia są szybsze/bardziej wydajne. Osobiście tego się właśnie spodziewałem i w związku z tym faktem polecam złączenia. |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 333 Pomógł: 137 Dołączył: 25.03.2008 Skąd: jesteś?? Ostrzeżenie: (0%) ![]() ![]() |
Ok, zdecydowałem się na połączenie jein'em, rozumiem że joinLeft() będzie najlepszym rozwiązaniem, mamy jeszcze join() i inne pochodne.
Mam tylko jeden problem, może ktoś zna obejście problemu. Kod modelu
W tabeli page i pageStatus mam pole o takiej samej nazwie "name" próbuję zmienić jego nazwę na "statusName" (w tabeli status) dostaję komunikat o błędzie: Message: SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'name' in where clause is ambiguous Po zmianie nazwy pola na "nazwa2" wszystko działa jak powinno, jest opcja by zachować takie same nazwy pól i jakoś przy pobieraniu je zmienić? -------------------- Mój blog - o wszystkim i niczym ale zazwyczaj związane z informatyką! ;-)
Githube Usługi spawalnicze i monterskie | Park linowy Lublin i Okunince |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 5 Dołączył: 26.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
Masz w dwóch tabelach pole o takiej samej nazwie. W Twoim zapisie nie wiadomo więc do którego pola odnosi się warunek. Wystarczy, że podasz nazwę tabeli:
lub też
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 333 Pomógł: 137 Dołączył: 25.03.2008 Skąd: jesteś?? Ostrzeżenie: (0%) ![]() ![]() |
Próbowałem błąd identyczny był. :-<
-------------------- Mój blog - o wszystkim i niczym ale zazwyczaj związane z informatyką! ;-)
Githube Usługi spawalnicze i monterskie | Park linowy Lublin i Okunince |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 22:48 |