Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> kłopoty z subqueries
emiliann
post
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 16.11.2011

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


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.

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
mortus
post
Post #2





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


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
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: 21.08.2025 - 07:53