Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql] warunek
Forum PHP.pl > Forum > Przedszkole
crunch
witam!

mam tabelę z [najważniejszymi] polami id i id_kat.
  1. CREATE TABLE `id2kat` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `id_kat` int(11) NOT NULL,
  4. PRIMARY KEY (`id`)
  5. )

potrzebuję wyciągnąć te id, których odpowiadające id_kat są równe wszystkim z podanych warunkiem.

Na przykład:
id id_kat
2 3
2 4
2 5
3 2
3 4
3 5

Dla id_kat = 3 AND id_kat=4
zwróci
id=2.

Będę wdzięczny za podpowiedź, nawet niekoniecznie rozwiązanie (choć przydałoby się smile.gif).
Pozdrawiam
xbigos
użyj DISTINCT smile.gif
określa, że wiersze powtarzające się mają być pominięte
zgugluj sobie bo nie chciałeś rozwiązania:D
crunch
hm.. chyba niezupełnie o to mi chodziło..
'distinct' owszem, zwróci mi różne wiersze, ale ważniejszy jest warunek..
Zapytanie powinno zwrócić te id, dla których istnieje id_kat równe (kolejno?) wszystkim przekazanym liczbom.

PS. Działa mi coś takiego (tyle że bardzo długo ;] ):
  1. SELECT DISTINCT (`p`.`id`)
  2. FROM `id2kat` AS `p`
  3. WHERE EXISTS (
  4.  
  5. SELECT `id`
  6. FROM `id2kat` AS `p2`
  7. WHERE (`p`.`id` = `p2`.`id`) AND (`p2`.`id_kat` =3)
  8.  
  9. ) AND EXISTS (
  10.  
  11. SELECT `id`
  12. FROM `id2kat` AS `p2`
  13. WHERE (`p`.`id` = `p2`.`id`) AND (`p2`.`id_kat` =4)
  14. );


PS2. Pisząc "długo" mam na myśli czas rzędu dziesiątek sekund ;] (dla ok. 1000 wpisów powyższe zapytanie mysql wykonuje w ok. 18sekund).
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.