![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 63 Pomógł: 14 Dołączył: 21.01.2009 Skąd: Mszczonów Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Mam problem z kwerendą mysql. Mój problem wygląda następująco: Muszę pobrać tylko te rekordy z tabeli1, które mają swoje odpowiedniki w tabeli2 (pole id), przy czym chcę pobierać 5 kolejnych rekordów, począwszy od x. Mój kod wygląda następująco:
Lecz niestety nie działa. Nie wiem co jest źle i czy w ogóle da się coś takiego zrobić. Proszę o pomoc. Pozdrawiam, Rytek. Ten post edytował rytek 29.07.2009, 11:29:11 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Poprawiona wersja:
Twoje błędy: 1. Zabrakło AS w pierwszej linijce 2. LEFT JOIN w złym miejscu, powinien być po FROM ... 3. LEFT jest niepotrzebne, bo: Muszę pobrać tylko te rekordy z tabeli1, które mają swoje odpowiedniki w tabeli2 4. Dwa razy dałeś warunek prefix_artykuly_glowna.typ='T' Tak z grubsza. Nie wiem czy będzie działało, ale błędami składni sypać już nie powinno. Ten post edytował sowiq 29.07.2009, 11:39:19 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 63 Pomógł: 14 Dołączył: 21.01.2009 Skąd: Mszczonów Ostrzeżenie: (0%) ![]() ![]() |
Dzięki wielkie za szybki odzew, ale...
Niestety nie działa (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Cytat You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GROUP BY prefix_artykuly_glowna.id LIMIT 0, 5' at line 5
Ten post edytował rytek 29.07.2009, 11:35:11 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Sorry, mój błąd. Oczywiście najpierw GROUP BY , a dopiero później ORDER BY. Już poprawiłem kod w moim poprzednim poście.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 63 Pomógł: 14 Dołączył: 21.01.2009 Skąd: Mszczonów Ostrzeżenie: (0%) ![]() ![]() |
Dzięki wielkie! Masz wielkiego plusa (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Działa, tylko jeszcze muszę wymyśleć, dlaczego działa nie tak jak potrzeba (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Mianowicie pobiera mi rekordy z prefix_segregator_glowna, które nie mają odpowiedników w prefix_artykuly_glowna. A ja próbuję zrobić, by pobierało z prefix_artykuly_glowna te, które mają odpowiedniki w prefix_segregator_glowna. Ale z bardziej rozbudowanych zapytań jestem noga jak na razie (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) OK, odwróciłem zapytanie, wydaje się prawidłowo... ale jest inny problem. Pokażę to na przykładzie: rekord 1 nie ma odpowiednika w tabeli 2 -> nie zostanie pobrany rekord 2 nie ma odpowiednika w tabeli 2 -> nie zostanie pobrany rekord 3 nie ma odpowiednika w tabeli 2 -> nie zostanie pobrany rekord 4 nie ma odpowiednika w tabeli 2 -> nie zostanie pobrany rekord 5 nie ma odpowiednika w tabeli 2 -> nie zostanie pobrany rekord 6 ma odpowiednika w tabeli 2 -> też nie zostanie pobrany, bo jest limit do rekordów... Ja potrzebuję właśnie obejść to do 5 wyświetlonych rekordów, z tym, że byłoby to proste, o ile mógłbym tutaj posłużyć się PHP, ale nie mogę, bo porypie się stronicowanie... Tzn, będzie wyświetlało więcej stron niż należy. Ten post edytował rytek 29.07.2009, 12:01:59 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
[...]pobiera mi rekordy z prefix_segregator_glowna, które nie mają odpowiedników w prefix_artykuly_glowna. No właśnie JOIN działa dokładnie tak, jak potrzebujesz. Na pewno nie wstawiłeś jakiegoś RIGHT/LEFT JOIN'a? A ja próbuję zrobić, by pobierało z prefix_artykuly_glowna te, które mają odpowiedniki w prefix_segregator_glowna. Dla testu wywal GROUP BY i COUNT() i zobacz jakie rekordy Ci zwróci. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 63 Pomógł: 14 Dołączył: 21.01.2009 Skąd: Mszczonów Ostrzeżenie: (0%) ![]() ![]() |
Po przywróceniu poprzedniego i wywaleniu group by i count nadal jest wszystko.
Już wszystko działa, skapnąłem się dopiero teraz, że id z 1 tabeli != id z drugiej, tj. powiązanie jest po innym polu. Wszystko działa, DZIĘKUJĘ (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Ten post edytował rytek 29.07.2009, 12:18:43 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 63 Pomógł: 3 Dołączył: 27.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
Jako, że akurat siedze nad czymś podobnym, to nie będę zakładał nowego tematu.
Otóż też próbuję wyciągnąć ilość rekordów z powiązanej tabeli. I w sumie działa poprawnie, ale tylko pod warunkiem, że ilość ta nie jest zerowa.
Jak mogę to zmienić, żeby wyrzuciło mi też elementy, które nie mają wystąpień w powiązanej tabeli i z informacją właśnie, że takowych jest właśnie 0. [edit]OK, problem już rozwiązałem. Google twoim przyjacielem, jak to mówią (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Nie wiem, na ile to jest optymalne, pewnie nie zbyt ze względu na zagnieżdżony select, ale działa, więc dla potomności:
Ten post edytował MatKus 30.07.2009, 09:34:08 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 16.09.2025 - 04:17 |