Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z select - where wielokrotnie
Forum PHP.pl > Forum > Bazy danych > MySQL
komarg
Witam mam problem z konstrukcja zapytania sad.gif(
2 tabele -
pep_anilox
-id (PK)
-anilox


i znacznie wieksza tab.
pep_forma
-id (PK)
-anilox01
-anilox02
-anilox03
itd do 12

anilox01-12 oczywiscie zawiera id odpowiadajace tab.anilox.

Gdy zrobie
  1. WHERE `pep_forma`.`anilox_01`=`pep_anilox`.`id`
wynik jest poprawny, lecz gdy dodaje kolejne polaczenia
  1. AND
i tylko zmieniam numery nie pokazuje juz zadnych wyników sad.gif
Czym to jest spowodowane?questionmark.gif
nospor
Cytat
Czym to jest spowodowane?
Tym ze warunek nie jest spelniony
komarg
dzieki za odp.
a czy mógłbys nieco najkierowac na rozwiazanie??
nospor
A co tu kierowac? Dajesz warunek, ktory nie jest spelniony. Sprawdz jak dokladnie wyglada przykladowy rekord i zastanaw sie, czemu warunek nie jest spelniony mimo ze ci sie wydaje ze byc powinien

naprawde wszystkie pola anilox01, anilox02,... anilox12 w jednym rekordzie maja te sama wartosc? Watpie
komarg
Gdybym znał rozwiązanie nie pisałbym na forum.
Jedynie domyslam sie ze problem lezy w wielokrotnym odwołaniu do pola pep_anilox.anilox (wsumie wystepuje 12razy)
nospor
Pytalem
Cytat
naprawde wszystkie pola anilox01, anilox02,... anilox12 w jednym rekordzie maja te sama wartosc? Watpie

Tu jest klucz do twojej zagadki.

Jesli zas chcesz pobrac wszystkie rekordy z pep_anilox ktore sa w tych polach, to masz uzyc LEFT JOIN a nie zadnego AND w WHERE. Podstawy logiki leza u ciebie wink.gif
komarg
  1. SELECT `pep_forma`.`id`,
  2. `pep_anilox`.`anilox` AS a1,
  3. `pep_anilox`.`anilox` AS a2,
  4. `pep_anilox`.`anilox` AS a3,
  5. `pep_anilox`.`anilox` AS a4,
  6. `pep_anilox`.`anilox` AS a5,
  7. `pep_anilox`.`anilox` AS a6,
  8. `pep_anilox`.`anilox` AS a7,
  9. `pep_anilox`.`anilox` AS a8,
  10. `pep_anilox`.`anilox` AS a9,
  11. `pep_anilox`.`anilox` AS a10,
  12. `pep_anilox`.`anilox` AS a11,
  13. `pep_anilox`.`anilox` AS a12
  14. FROM `pep_forma`
  15. LEFT JOIN pep_anilox ON pep_forma.anilox_01=pep_anilox.id

Dla jednego wiersza działa, przy dodaniu kolejnych pokazuje puste wyniki
nospor
zacznij w koncu podawac pelne zapytania ktore ci nie dzialaja. Skad mam wiedziec jak to dodajesz?
komarg
  1. SELECT `pep_forma`.`id`,
  2. `pep_anilox`.`anilox` AS a1,
  3. `pep_anilox`.`anilox` AS a2,
  4. `pep_anilox`.`anilox` AS a3,
  5. `pep_anilox`.`anilox` AS a4,
  6. `pep_anilox`.`anilox` AS a5,
  7. `pep_anilox`.`anilox` AS a6,
  8. `pep_anilox`.`anilox` AS a7,
  9. `pep_anilox`.`anilox` AS a8,
  10. `pep_anilox`.`anilox` AS a9,
  11. `pep_anilox`.`anilox` AS a10,
  12. `pep_anilox`.`anilox` AS a11,
  13. `pep_anilox`.`anilox` AS a12
  14. FROM `pep_forma`
  15. LEFT JOIN pep_anilox ON pep_forma.anilox_01=pep_anilox.id
  16. AND pep_forma.anilox_02=pep_anilox.id
  17. AND pep_forma.anilox_03=pep_anilox.id
  18. itd...
nospor
Na kazde pole masz robic oddziely LEFT JOIN a nie jeden LEFT JOIN z wieloma AND... toz teraz zrobiles to samo co wczesniej
komarg
  1. SELECT `pep_forma`.`id`,
  2. `pep_anilox`.`anilox` AS a1,
  3. `pep_anilox`.`anilox` AS a2,
  4. `pep_anilox`.`anilox` AS a3,
  5. `pep_anilox`.`anilox` AS a4,
  6. `pep_anilox`.`anilox` AS a5,
  7. `pep_anilox`.`anilox` AS a6,
  8. `pep_anilox`.`anilox` AS a7,
  9. `pep_anilox`.`anilox` AS a8,
  10. `pep_anilox`.`anilox` AS a9,
  11. `pep_anilox`.`anilox` AS a10,
  12. `pep_anilox`.`anilox` AS a11,
  13. `pep_anilox`.`anilox` AS a12
  14. FROM `pep_forma`
  15. LEFT JOIN `pep_anilox` ON `pep_forma`.`anilox_01`=`pep_anilox`.`id`
  16. LEFT JOIN `pep_anilox` ON `pep_forma`.`anilox_02`=`pep_anilox`.`id`
  17. LEFT JOIN `pep_anilox` ON `pep_forma`.`anilox_03`=`pep_anilox`.`id`
  18. LEFT JOIN `pep_anilox` ON `pep_forma`.`anilox_04`=`pep_anilox`.`id`
  19. LEFT JOIN `pep_anilox` ON `pep_forma`.`anilox_05`=`pep_anilox`.`id`
  20. LEFT JOIN `pep_anilox` ON `pep_forma`.`anilox_06`=`pep_anilox`.`id`
  21. LEFT JOIN `pep_anilox` ON `pep_forma`.`anilox_07`=`pep_anilox`.`id`
  22. LEFT JOIN `pep_anilox` ON `pep_forma`.`anilox_08`=`pep_anilox`.`id`
  23. LEFT JOIN `pep_anilox` ON `pep_forma`.`anilox_09`=`pep_anilox`.`id`
  24. LEFT JOIN `pep_anilox` ON `pep_forma`.`anilox_10`=`pep_anilox`.`id`
  25. LEFT JOIN `pep_anilox` ON `pep_forma`.`anilox_11`=`pep_anilox`.`id`
  26. LEFT JOIN `pep_anilox` ON `pep_forma`.`anilox_12`=`pep_anilox`.`id`

no i dostaje Error 1066 "Not unique table/alias: "pep_anilox"
nospor
Ale kazda tabela w LEFT JOIN ma miec swoj alias by byla unikalna. Inaczej dostajesz blad jaki wlasnie masz teraz.
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-2019 Invision Power Services, Inc.