Pomoc z zapytaniem.

0

Witam.
Mam tabelę:

PageCategory

  • id
  • page_id
  • category_id

Chciałbym wyświetlić page_id, które posiadają category_id = 8 i category_id = 10. W przypadku wyświetlenia category_id = 8 lub category_id = 10 nie ma problemu:

SELECT page_id FROM PageCategory WHERE category_id IN (8, 10)

Jak to będzie wyglądać w przypadku operatora AND?

Próbowałem tak:

SELECT page_id FROM PageCategory WHERE category_id = 8 AND category_id  = 10

Powyższe zapytanie wyświetli brak wyników, gdyż nie ma pojedynczego wiersza, które ma więcej niż jedno category_id

Z góry dziękuję za pomoc.
Pozdrawiam.

dodanie znaczników <code class="sql"> - furious programming

1

Nie rozumiem pytania. A ty nie rozumiesz logiki. Bo chodzi ci o page_id, które posiadają category_id = 8 LUB category_id = 10. A taki operator logiczny to OR

1

A nazwij mi przynajmniej jedną liczbę która równa 8 oraz równa 10 jednocześnie ?

0

Wytłumaczę na przykładzie:

id,page_id,category_id
1,2,8
2,5,5
3,2,10
4,3,1
5,4,6
6,2,8
7,4,9
8,3,4
9,1,4
10,4,8

  1. Powyżej pogrubiłem rekordy, które powinno zaznaczyć.
    page_id = 2 ma category_id = 8 i category_id = 10.

  2. Podkreśliłem rekordy, które mają jedną szukaną kategorię

Ja chce wyszukać tylko takie page_id, które posiadają category_id = 10 i category_id = 8.

Ps. mam nadzieję, że teraz jest bardziej zrozumiałe o co chodzi :)

1

Ok, w takim razie zrób self join...

select p.page_id from tabela as p
inner join tabela as s on p.page_id = s.page_id and p.id < s.id

1 użytkowników online, w tym zalogowanych: 0, gości: 1