Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zapytania SQL z "IN"
kacpero1094
post
Post #1





Grupa: Zarejestrowani
Postów: 87
Pomógł: 0
Dołączył: 22.12.2008

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


Robię nowy skrypt swojej strony i potrzebuję na stronie kategorii, która ma kilka podkategorii wyświetlać wszystkie artykuły: z danej kategorii, i ze wszystkich podkategorii. Zrobiłem w tym celu zapytanie:
  1. SELECT * FROM `arts` WHERE `category` LIKE 'idKategorii' OR `category` LIKE `id` IN (SELECT `id` FROM `category` WHERE `attached` LIKE 'idKategorii')

Proszę o pomoc.


--------------------
kacperkolodziej.pl
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
Mchl
post
Post #2





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

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


A jaki masz problem?

Przydałoby się pewnie też opisać strukturę danych (czyli jak podkategorie są powiązane z kategoriami)
Go to the top of the page
+Quote Post
kacpero1094
post
Post #3





Grupa: Zarejestrowani
Postów: 87
Pomógł: 0
Dołączył: 22.12.2008

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


Struktura wygląda tak:
`arts`
`id`
`title`
[dalej kilka pól]
`category`
[i jeszcze kilka innych pól]

`category`
`id`
`name`
`desc`
`attached` - na podstawie tego pola skrypt sprawdza, czy kategoria jest powiązana z jakąś (nadrzędną), czy nie (wartość 0).

Problem polega na tym, że skrypt zwraca pustą wartość, chociaż artykułów jest bardzo dużo.

W phpMyAdmin dałem to polecenie:
  1. SELECT `id` FROM `arts` WHERE (`category` LIKE '%' OR `category` LIKE `id` IN (SELECT `id` FROM `category` WHERE `attached` LIKE '%')) ORDER BY `date` DESC LIMIT 0,10

a on wyrzucił coś takiego:
Kod
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IN (SELECT `id` FROM `category` WHERE `attached` LIKE '%')) ORDER BY `date` DE' at line 1


Ten post edytował kacpero1094 9.07.2010, 08:40:01


--------------------
kacperkolodziej.pl
Go to the top of the page
+Quote Post
tvister
post
Post #4





Grupa: Zarejestrowani
Postów: 253
Pomógł: 29
Dołączył: 18.08.2008

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


Zgadnij co tu jest niepoprawnie ;>

  1. WHERE `category` LIKE 'idKategorii' OR `category` LIKE `id` IN


--------------------
Kto rano wstaje ten leje jak z cebra.
Go to the top of the page
+Quote Post
kacpero1094
post
Post #5





Grupa: Zarejestrowani
Postów: 87
Pomógł: 0
Dołączył: 22.12.2008

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


Cytat(tvister @ 9.07.2010, 09:49:19 ) *
Zgadnij co tu jest niepoprawnie ;>

  1. WHERE `category` LIKE 'idKategorii' OR `category` LIKE `id` IN

Jeśli chodzi Ci o `category` LIKE `id`, to powiem, że tak może być, bo widziałem to w książce "SQL. Leksykon kieszonkowy".
A jak wiesz, to powiedz smile.gif


--------------------
kacperkolodziej.pl
Go to the top of the page
+Quote Post
Mchl
post
Post #6





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

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


Oczywiście, że może być, chociaż lepszy byłby = zamiast LIKE
A czy piszą w tym leksykonie że może być od razu po tym IN?
Go to the top of the page
+Quote Post
kacpero1094
post
Post #7





Grupa: Zarejestrowani
Postów: 87
Pomógł: 0
Dołączył: 22.12.2008

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


Cytat(kacpero1094 @ 9.07.2010, 09:54:24 ) *
Jeśli chodzi Ci o `category` LIKE `id`, to powiem, że tak może być, bo widziałem to w książce "SQL. Leksykon kieszonkowy".

Nie chodziło mi tutaj o LIKE, tylko o to, że przyrównuję "pole do pola", a nie pole do konkretnej wartości.


--------------------
kacperkolodziej.pl
Go to the top of the page
+Quote Post
tvister
post
Post #8





Grupa: Zarejestrowani
Postów: 253
Pomógł: 29
Dołączył: 18.08.2008

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


Zrzut błędu składni sql-a wyraźnie informuje gdzie jest problem. Niepoprawnie używasz operandu w konstrukcji IN.

ps. Co do leksykonu to może na ostatniej stronie jest errata smile.gif


--------------------
Kto rano wstaje ten leje jak z cebra.
Go to the top of the page
+Quote Post
kacpero1094
post
Post #9





Grupa: Zarejestrowani
Postów: 87
Pomógł: 0
Dołączył: 22.12.2008

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


Niestety żadnej erraty nie ma, ale w opiniach na helion.pl przeczytałem, że są błędy w kodzie. W innym miejscu było dobrze, ale zanim to przeczytałem, gvintoo z BLIP'a mi to uświadomił smile.gif


--------------------
kacperkolodziej.pl
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 - 19:03