konto usunięte

Temat: Problem z filtrowaniem wyników w zapytaniu PostgreSQL

Witam serdecznie,
Mam takie zapytanie:
SELECT * FROM zamowienia WHERE wydruk = 'nie'
i tabelkę:

create table zamowienia
(
id serial NOT NULL,
numerzamowienia varchar(6),
nazwazamowienia varchar(30),
cenazamowienia varchar(5),
wydruk varchar(3),
PRIMARY KEY (id)
);

które wyświetla mi wszystkie rekordy zakładające wydruk = nie.

Problem w tym że zdarza się iż rekordy które mają wspólny "numerzamowienia".
czyli ww. zapytanie wyświetli np 3,4,8... rekordów o takim samym numerzezamowienia.
Wie ktoś może jak napisać zapytanie SQL, tak żeby wyświetlało rekordy z nie więcej niż jednym
numeremzamowienia?


Z góry dziękuje za pomoc,
pozdrawiam Łukasz
Grzegorz D.

Grzegorz D. PL/SQL Developer

Temat: Problem z filtrowaniem wyników w zapytaniu PostgreSQL

select distinct numerzamowienia, nazwazamowienia, cenazamowienia, wydruk
from zamowienia
where wydruk = 'nie';Grzegorz Drzymała edytował(a) ten post dnia 04.08.09 o godzinie 08:38
Robert Suski

Robert Suski Sr Solutions
Developer

Temat: Problem z filtrowaniem wyników w zapytaniu PostgreSQL

W postgresie jest tez dstinct on (nazwa kolumny) np

select distinct on (numerzamowienia) * from zamowienia where wydruk='nie';

konto usunięte

Temat: Problem z filtrowaniem wyników w zapytaniu PostgreSQL

zadziałało :
select distinct numerzamowienia, wydruk from zamowienia where wydruk = 'nie';

dzięki :))

konto usunięte

Temat: Problem z filtrowaniem wyników w zapytaniu PostgreSQL

select distinct on (numerzamowienia) * from zamowienia where wydruk='nie';

to też działa :)
Grzegorz D.

Grzegorz D. PL/SQL Developer

Temat: Problem z filtrowaniem wyników w zapytaniu PostgreSQL

w sumie distinct to chyba zła podpowiedź ;)

zagalopowalem sie ;)

jezeli dobrze teraz zrozumialem to bedzie to cos takiego :

select z1.numerzamowienia,z1.nazwazamowienia,z1.cenazamowienia,z1.wydruk,count(z2.numerzamowienia) from zamowienia z1,zamowienia z2
where z1.wydruk = 'NIE' and z1.numerzamowienia = z2.numerzamowienia
group by z1.numerzamowienia,z1.nazwazamowienia,z1.cenazamowienia,z1.wydruk
having count(z2.numerzamowienia) <= 1;

edit: a jednak tylko tyle w tym selekcie potrzebowales...no to dla takich atrybutow zadziala ;)Grzegorz Drzymała edytował(a) ten post dnia 03.08.09 o godzinie 22:07
Marcin K.

Marcin K. Programowanie jest
moim powołaniem,
Alleluja

Temat: Problem z filtrowaniem wyników w zapytaniu PostgreSQL

do tego zapytania można użyć distinct(po numerze zamowienia), ale
też można co polecam group by po numerze zamówienia (Tak jak o tym już wspomniał Grzegorz).

W drugim wypadku elementy tego samego zamówienia zostaną zgrupowane w jednym rekordzie, a dodatkowo można obliczyć ilość i kwotę produktów badź usług należących do danego zamówieniaMarcin K. edytował(a) ten post dnia 06.08.09 o godzinie 03:37

Następna dyskusja:

[postgresql] Problem z inde...




Wyślij zaproszenie do