Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zapytania SQL z "IN"
Forum PHP.pl > Forum > Bazy danych > MySQL
kacpero1094
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.
Mchl
A jaki masz problem?

Przydałoby się pewnie też opisać strukturę danych (czyli jak podkategorie są powiązane z kategoriami)
kacpero1094
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
tvister
Zgadnij co tu jest niepoprawnie ;>

  1. WHERE `category` LIKE 'idKategorii' OR `category` LIKE `id` IN
kacpero1094
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
Mchl
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?
kacpero1094
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.
tvister
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
kacpero1094
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
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.