Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL] Zmienna w LIMIT
TrAvIkK
post 25.05.2007, 12:49:20
Post #1





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 23.11.2006

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


Siemka

Potrzebuje w zapytaniu SELECT dodać LIMIT, ale tak, by jego wartość była zmienną:

  1. SELECT ... INTO ... FROM .... LIMIT nazwa_zmiennej

Doszedłem do tego, że używa się do tego mniej więcej tego:

  1. SET @LIMIT = 5;
  2. PREPARE stmt FROM ' SELECT ...
  3. FROM ... LIMIT ?;';
  4. EXECUTE stmt USING @LIMIT;


I to działa, tylko gorzej jak chcę by wybierało powiedzmy SUM(nazwaPola), wtedy należy użyć ORDER BY RAND(), ale z niewiadomych powodów jak chcę wyprowadzić wynik SUM() do zmiennej, to wyprowadza 0 aaevil.gif

Czyli to co nie działa wygląda tak:

  1. SET @LIMIT = 5;
  2. PREPARE stmt FROM ' SELECT ... INTO @zmienna FROM ... ORDER BY RAND() LIMIT ?;';
  3. EXECUTE stmt USING @LIMIT;


Zna ktoś rozwiązanie problemu? Chodzi mi poprostu o wybranie SUM(nazwaPola) do zmiennej z danej tabeli o limicie, którym jest jakaś zmienna

Ten post edytował TrAvIkK 25.05.2007, 12:50:11
Go to the top of the page
+Quote Post
prond
post 28.05.2007, 09:18:56
Post #2





Grupa: Zarejestrowani
Postów: 254
Pomógł: 10
Dołączył: 8.11.2006
Skąd: Warszawa

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


Spróbuj tak:
  1. SET @mySum := 0;
  2. SET @myLimit := 5;
  3. PREPARE myStmt FROM 'SELECT @mySum := SUM(`field_no`) as s FROM resources ORDER BY RAND() LIMIT ?';
  4. EXECUTE myStmt USING @myLimit;
  5.  
  6. SELECT @mySum;


--------------------
--------------------------------------------------------------------------------
weblog.axent.pl
--------------------------------------------------------------------------------
Go to the top of the page
+Quote Post
TrAvIkK
post 31.05.2007, 14:10:11
Post #3





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 23.11.2006

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


Cytat(prond @ 28.05.2007, 10:18:56 ) *
Spróbuj tak:
  1. SET @mySum := 0;
  2. SET @myLimit := 5;
  3. PREPARE myStmt FROM 'SELECT @mySum := SUM(`field_no`) as s FROM resources ORDER BY RAND() LIMIT ?';
  4. EXECUTE myStmt USING @myLimit;
  5.  
  6. SELECT @mySum;


Hmm wygląda na to, że działa smile.gif
Dzięki !
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 13.06.2025 - 09:38