Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> wyswietlanie danych z dwoch polaczonych tabel, problem przy stronicowaniu.
x11100b
post
Post #1





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 20.08.2009

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


witam

mam dwie tabele ktore tworze tak:

  1. CREATE TABLE vc_t (id integer PRIMARY KEY NOT NULL AUTO_INCREMENT, txt text, tyt char(255), dat datetime, kat integer, pub BOOLEAN, email char(255))
  2. CREATE TABLE galerie (id integer PRIMARY KEY NOT NULL AUTO_INCREMENT, DATA DATE, id_tekstu integer NOT NULL, zdjecie mediumblob, mini blob , rozszerzenie char(4) ,wys integer, szer integer)


pierwsza to tabela zawierajaca teksty, druga zawiera zdjecia z ktorych kazde przypisane jest do pewnego tekstu.

chce pobrac teksty wraz z identyfikatorami zdjec ktore im odpowiadaja.

bez stronicowania robilem to tak, ze pobieralem teksty (sortowane wedlug ID) wraz z iloscia zdjec do danego tekstu. nastepnie pobieralem zdjecia z tabeli 'galerie' (posortowane wedlug id_tekstu), i nastepnie w petli wyswietlalem tekst, i w dodatkowej petli w petli wyswietlalem odpowiednia ilosc zdjec z drugiego zapytania.

teraz chce zrobic stronicowanie, ilosc zdjec do danego tekstu umiem pobrac - takim zapytaniem:
  1. (
  2. SELECT `vc_t`.`id` AS `id` , COUNT( `galerie`.`id` ) AS 'ilosc', `dat` , `tyt` , `txt`
  3. FROM `galerie` , `vc_t`
  4. WHERE `galerie`.`id_tekstu` = `vc_t`.`id`
  5. AND `pub` = '1'
  6. GROUP BY `vc_t`.`id`
  7. )
  8. UNION (
  9.  
  10. SELECT `vc_t`.`id` AS `id` , 0 AS 'ilosc', `dat` , `tyt` , `txt`
  11. FROM `vc_t`
  12. WHERE `vc_t`.`id` NOT
  13. IN (
  14.  
  15. SELECT `id_tekstu`
  16. FROM `galerie`
  17. )
  18. )
  19. ORDER BY `id` DESC
  20. LIMIT $vc_start, $vc_n


ale nie wiem jak pobrac kolejnym zapytaniem odpowiednio ustawione identyfikatory zdjec?

a moze ktos ma lepszy pomysl jak wyswietlic takie dane z dwoch polaczonych tabel, z uzyciem stronicowania?

pozdrawiam (IMG:style_emoticons/default/winksmiley.jpg)




jeszcze chcialbym napisac, ze wymyslilem takie zapytanie:

  1. SELECT `id` FROM `galerie` WHERE `galerie`.`id_tekstu` IN (SELECT `id` FROM `vc_t` ORDER BY `id` DESC LIMIT 0, 5 ) ORDER BY `id_tekstu` DESC


jednak dostaje taki komunikat o bledzie:

#1235 - This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'



zrobilem to tak:

  1. SELECT `id`
  2. FROM `galerie`
  3. WHERE `galerie`.`id_tekstu` > (SELECT min( `id` ) FROM `vc_t` ORDER BY `id` DESC LIMIT 0 , 3) AND `galerie`.`id_tekstu` < (SELECT max( `id` ) FROM `vc_t` ORDER BY `id` DESC LIMIT 0 , 3)
  4. ORDER BY `galerie`.`id_tekstu` DESC


jesli ktos ma jakis inny moze lepszy pomysl to bede wdzieczny (IMG:style_emoticons/default/winksmiley.jpg)

pozdrawiam
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 14:21