Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL][MySQL]Problem z zapytaniem sql
Forum PHP.pl > Forum > Przedszkole
eminiasty
  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
mmmmmmm
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
eminiasty
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
mmmmmmm
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)
eminiasty
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
viking
W pętli zmienna $i nie samo i.
Czytaj komunikaty zawsze.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.