Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL][MySQL]Problem z zapytaniem sql
eminiasty
post
Post #1





Grupa: Zarejestrowani
Postów: 267
Pomógł: 0
Dołączył: 11.09.2015

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


  1. SELECT mgr_recipes.*,mgr_recipescategories.*,mgr_image.image_codename, GROUP_CONCAT(DISTINCT mgr_recipescategories.categories_id,';' , mgr_categories.categories_name, ';' , mgr_categories.categories_colorText,';',mgr_categories.categories_colorBg) AS kat,mgr_users.users_login FROM mgr_recipes JOIN mgr_recipescategories ON mgr_recipes.recipes_id = mgr_recipescategories.recipes_id JOIN mgr_categories ON mgr_categories.categories_id = mgr_recipescategories.categories_id JOIN mgr_recipesimage ON mgr_recipes.recipes_id = mgr_recipesimage.recipes_id JOIN mgr_image ON mgr_image.image_id = mgr_recipesimage.image_id JOIN mgr_users ON mgr_users.users_id = mgr_recipes.users_id JOIN mgr_recipesingredients ON mgr_recipes.recipes_id = mgr_recipesingredients.recipes_id JOIN mgr_recipesmethod ON mgr_recipes.recipes_id = mgr_recipesmethod.recipes_id JOIN mgr_recipesrecommended ON mgr_recipes.recipes_id = mgr_recipesrecommended.recipes_id JOIN mgr_recipesseason ON mgr_recipes.recipes_id = mgr_recipesseason.recipes_id JOIN mgr_recipestimeofday ON mgr_recipes.recipes_id = mgr_recipestimeofday.recipes_id WHERE mgr_recipes.recipes_active = 1 AND mgr_recipes.recipes_id NOT IN (
  2.  
  3. SELECT mgr_recipes.recipes_id FROM mgr_recipes JOIN mgr_recipescategories ON mgr_recipes.recipes_id = mgr_recipescategories.recipes_id JOIN mgr_categories ON mgr_categories.categories_id = mgr_recipescategories.categories_id JOIN mgr_recipesimage ON mgr_recipes.recipes_id = mgr_recipesimage.recipes_id JOIN mgr_image ON mgr_image.image_id = mgr_recipesimage.image_id JOIN mgr_users ON mgr_users.users_id = mgr_recipes.users_id JOIN mgr_recipesingredients ON mgr_recipes.recipes_id = mgr_recipesingredients.recipes_id JOIN mgr_recipesmethod ON mgr_recipes.recipes_id = mgr_recipesmethod.recipes_id JOIN mgr_recipesrecommended ON mgr_recipes.recipes_id = mgr_recipesrecommended.recipes_id JOIN mgr_recipesseason ON mgr_recipes.recipes_id = mgr_recipesseason.recipes_id JOIN mgr_recipestimeofday ON mgr_recipes.recipes_id = mgr_recipestimeofday.recipes_id WHERE mgr_recipes.recipes_active = 1 GROUP BY mgr_recipes.recipes_id LIMIT 3
  4. )
  5. GROUP BY mgr_recipes.recipes_id


Mam taki blad:
#1235 - This version of MariaDB doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'

Jak poprawic to zapytanie?

#Wersja klienta bazy danych: libmysql - mysqlnd 5.0.11-dev

Ten post edytował eminiasty 24.07.2016, 17:06:57
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
mmmmmmm
post
Post #2





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


1. O aliasach słyszałeś?
2. Problem błędu możesz rozwiązać stosując (zamiast NOT IN) "LEFT JOINa z NULLem"
3. to i tak się nie uda (nie powinno się udać), gdyż wyświetlasz * z trzech tabel a grupowanie robisz tylko po id z jednej.
4. Widzę, że w zapytaniu głównym i tym w NOT IN masz dokładnie takie samo złączenie... Może więc zamiast tego całego NOT IN dać LIMIT 100 OFFSET 4
Go to the top of the page
+Quote Post
eminiasty
post
Post #3





Grupa: Zarejestrowani
Postów: 267
Pomógł: 0
Dołączył: 11.09.2015

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


Zapytanie ma dzialac w karuzeli 3 wyswietlenia, potem nastepne 3 - te ktore juz byly itd...
wiec.
4. odpada limit ( co daje offset?)
2. probowalem ale nie pomaga
1. nie wiem co to chyba ze chodzi o to as inna_nazwa?
3. nie wiem jak wcisnac grupowanie do pierwszego zapytania bo jest ono po where a zeby zrobic not in musze konczyc warunkiem to zapytanie

  1. AND mgr_recipes.recipes_id NOT IN (


Teoretycznie problem jest prosty Mam X (ogloszen , obrazkow, czegos tam..) , wyswietlam 3 szt z tego i odejmuje X-3=y.
Po czym chce wyswietlic zapytanie ktore da mi y czyli wszystko bez tych trzech.

Stworzylem takie rozwiazanie jednak wyswietla ono po jednym rekordzie a chcialbym po 3 jednoczesnie probowalem gdzies petle wcisnac
  1. for($x=0;$x<3;$x++){

aczkolwiek to nie pomaga

Jakiś pomysł na rozwiązanie tego?

Ma być to bootstrapowa karuzela wyświetlająca po 3 zdjecia kazde kolejne przejscie nie uwzglednia poprzedniego.

  1. $query1 =select *...
  2. $result= mysqli_query($link,$query1) or die(mysqli_error());
  3.  
  4. $rows = array();
  5. while($row = mysqli_fetch_assoc($result)) {
  6.  
  7. $rows[] = $row;
  8.  
  9. }
  10.  
  11. <?php $i = 1;
  12. foreach ($rows as $row):
  13.  
  14. $item_class = ($i == 1) ? 'item active' : 'item';
  15. echo'<div class="<?php echo $item_class; ?>">';
  16.  
  17. ....//wyswietlanie
  18.  
  19.  
  20. ?>
  21.  
  22. </div>
  23. <?php $i++; ?>
  24. <?php endforeach; ?>
  25. </div>
  26. </div>
  27.  


up
Go to the top of the page
+Quote Post
mmmmmmm
post
Post #4





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


Cytat(eminiasty @ 29.07.2016, 20:06:42 ) *
Teoretycznie problem jest prosty Mam X (ogloszen , obrazkow, czegos tam..) , wyswietlam 3 szt z tego i odejmuje X-3=y.
Po czym chce wyswietlic zapytanie ktore da mi y czyli wszystko bez tych trzech.

Klasyczne LIMIT x OFFSET y (i lepiej zapisywać to właśnie tak, a nie LIMIT y, x)
Go to the top of the page
+Quote Post
eminiasty
post
Post #5





Grupa: Zarejestrowani
Postów: 267
Pomógł: 0
Dołączył: 11.09.2015

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


Zrobilem cos takiego ale nie do konca dziala, bez petli owszem jednak chcialbym zastosowac takie rozwiazanie:

pierwszy arg- limit
drugi arg - offset

  1. for($i=3;$i<100;$i=i+3){
  2. echo '<div class="item">';
  3. funkcja(3,$i,$prefix,$link);
  4. echo '</div>';
  5. }


Blad:
  1. Notice: Use of undefined constant i - assumed 'i' in
  2.  


i nie przeskakuje do kolejnego elementu karuzeli

Ten post edytował eminiasty 31.07.2016, 10:13:12
Go to the top of the page
+Quote Post
viking
post
Post #6





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


W pętli zmienna $i nie samo i.
Czytaj komunikaty zawsze.


--------------------
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 Aktualny czas: 20.08.2025 - 10:13