Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z odpowiednim zapytaniem SQL
Forum PHP.pl > Forum > Bazy danych
Dawid Pytel
Witam

Mam problem ze stworzeniem zapytania SQL do poniższego problemu.
Otóż mam tabelę PRODUKTY

Kod
PRODUKTY

id | symbol | nazwa


rekordy w tabeli do produkty. Produkty te mogą się powtarzać, np
Kod
1 | "OBR001" | "Obrecz do kola 1"

2 | "OBR002" | "Obrecz do kola 2"

3 | "OBR001" | "Obrecz do kola 1"


i pojawił się pewien problem. Do bazy dodane zostały produkty o tych samych symbolach ale różnych nazwach (co nie może mieć miejsca smile.gif)
Teraz OBR001 do obrecz i rama rowerowa. Chciałbym wypisać w SQLu rekordy, które mają te same symbole ale różne nazwy.

Próbowałem na wiele sposobów jednak bez większych sukcesów sad.gif
Byłbym wdzięczny gdyby ktoś z Was mógł mnie przynajmniej naprowadzić, którymi funkcjami SQLa się zainteresować.

Pozdrawiam
Dawid Pytel
Trudno, jakoś sobie poradziłem. Niestety, musiałem użyć do etgo większej ilości zapytań. Kto wie, może da się stworzyć odpowiednie zapytanie, które wszystko ładnie wyświetli... mi się nie udało rolleyes.gif
scanner
poszukaj o (jełśi mnie pamięc nie myli) [sql:1:b0ff4edaba]GROUP BY[/sql:1:b0ff4edaba]
lukaswoj
scanner: wydaje mi się, że Dawid nie uzyska tego o co mu chodzi za pomocą[sql:1:c7cec91245]GROUP BY[/sql:1:c7cec91245]

Dawid:
Mmyślę, że musisz połączyć tabelę samą ze sobą smile.gif
Czyli coś takiego:
[sql:1:c7cec91245]
SELECT * FROM PRODUKTY as a, PRODUKTY as b WHERE a.symbol=b.symbol AND a.nazwa!=b.nazwa
[/sql:1:c7cec91245]
Dostaniesz z tego zapytania podwójną ilość rekordów, ale to chyba będzie to co Ci chodziło.
BzikOS
No można i pojedyncza ilość rekordów:

[sql:1:868c37e31f]SELECT a.id, a.symbol, a.nazwa
FROM PRODUKTY AS a, PRODUKTY AS b
WHERE a.symbol=b.symbol AND a.nazwa!=b.nazwa[/sql:1:868c37e31f]
lukaswoj
BzikOS: Nie chodziło mi o dublowanie pól tylko o dublowanie wierszy.

Zobrazuje to o co mi chodzi:
Kod
id  nazwa1  nazwa2  id  nazwa1  nazwa2  

5    OBR001    Druga rama rowerowa    1    OBR001    Obręcz 1    

5    OBR001    Druga rama rowerowa    2    OBR001    Obręcz 1    

1    OBR001    Obręcz 1    5    OBR001    Druga rama rowerowa    

2    OBR001    Obręcz 1    5    OBR001    Druga rama rowerowa

Tutaj widać że dwa pierwsze wiersze są jakby "tym samym" co dwa ostatnie - przynajmniej jeśli będziemy na nie patrzyć pod kątem takim o jaki chodziło Dawidowi.

Swoją drogą ciekawe jak te wiersze nadmiarowe wyeliminować z poziomu SQL'a, ale wg mnie w tym przypadku sie nie da.
Dawid Pytel
Dziękuje Wam za pomoc. Faktycznie najlepszą wskazówką było 'skopiowanie' tabeli i działanie na tym.

Oczywiście wiersze z poszukiwanymi rekordami zostają powielone dlatego dla mnie wystarczy zastosować DISTINCT symbol aby wyciągnąć interesujące mnie symbole.

Wprawdzie wcześniej rozwiązałem ten problem stosując dla każdego symbolu odpowiednie zapytanie jednak produktów w bazie mam kilka tysięcy więc to będzie o wiele szybsze. Jeszcze raz dziękuje 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.