Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: kłopoty z subqueries
Forum PHP.pl > Forum > Bazy danych > MySQL
emiliann
Widuje się cały czas podobne przykłady w różnych manualach, ale jak człowiek chce sam to zrobić to nie wychodzi.
W zapytaniu nie ma raczej błędu składni bo sql zwraca mi jakies wyniki ale nie wszystkie. Błędów też nie raportuje.

Oto zapytanie [wklejam całe na wszelki wypadek]:

SELECT tablicapp_tools.cena, tablicapp_tools.id, tablicapp_tools.opis, tablicapp_tools.text_pr, tablicapp_tools.katalog, tablicapp_tools.ilefotek, tablicapp_tools.nazwa, tablicapp_tools.tagi, tablicapp_tools.par, tablicapp_tools.plik, tablicapp_tools.fantom, apple_sc.id AS scid, apple_sc.o1, apple_sc.o2, apple_sc.o3, apple_sc.o4, apple_sc.o5
FROM apple_sc
LEFT JOIN tablicapp_tools ON apple_sc.id = tablicapp_tools.sciecha
WHERE
(
(
tablicapp_tools.sciecha ='989'
AND tablicapp_tools.blok !='tak'
AND tablicapp_tools.nazwa !=''
AND tablicapp_tools.podprodukt =''
)
OR
(
tablicapp_tools.id = (SELECT id FROM tablicapp_tools AS t3 WHERE t3.id=tablicapp_tools.fantom)
)
)
ORDER BY tablicapp_tools.kol, tablicapp_tools.id DESC
LIMIT 0 , 25

==============================================

Jak narazie zapytanie zwraca mi tylko dane z pierwszego warunku, tzn:
(
tablicapp_tools.sciecha ='989'
AND tablicapp_tools.blok !='tak'
AND tablicapp_tools.nazwa !=''
AND tablicapp_tools.podprodukt =''
)

a chciałbym aby zadziałał mi także ten warunek:

(
tablicapp_tools.id = (SELECT id FROM tablicapp_tools AS t3 WHERE t3.id=tablicapp_tools.fantom)
)


I nie jestem pewien czy to logicznie możliwe ... czy czegos nie namieszałem.

mortus
Ciężko cokolwiek powiedzieć, bo nie znamy struktury tabel i wzajemnych relacji niektórych pól (tablicapp_tools.id i tablicapp_tools.fantom). Przede wszystkim sprawdź ile rekordów zwraca zapytanie
  1. SELECT id FROM tablicapp_tools AS t3 WHERE t3.id=tablicapp_tools.fantom

Jeśli więcej niż jeden, to nie możesz użyć znaku równości w drugim warunku, a powinieneś użyć IN.
  1. tablicapp_tools.id IN (SELECT id FROM tablicapp_tools AS t3 WHERE t3.id=tablicapp_tools.fantom)


Poza tym za mało wiemy, aby stwierdzić, czy to jest logicznie możliwe, czy nie
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.