Query does not work: parse ERROR, Re: How to enter lists into database: Problems with solution.

Поиск
Список
Период
Сортировка
От Frederick Klauschen
Тема Query does not work: parse ERROR, Re: How to enter lists into database: Problems with solution.
Дата
Msg-id 20010926184545.20714.qmail@web10108.mail.yahoo.com
обсуждение исходный текст
Ответы Re: Query does not work: parse ERROR, Re: How to enter lists into database: Problems with solution.  ("Josh Berkus" <josh@agliodbs.com>)
Список pgsql-sql
Hi Josh,

I am really sorry to bother you again and I promise
to buy a book after this problem is solved and
stop asking these "beginners'" questions.
But the last example-Query you sent me does not
work, it produces:

ERROR: parser: parse error at or near "("

and I am sure, I entered it correctly.
(I also tried on PostgreSQL Versions 7.0.3 and 
7.1.3)

Thank you very much,
Frederick




--- Josh Berkus <josh@agliodbs.com> wrote:
> Frederick,
> 
> > "Mary Stuart" correctly. But such a query also
> > seems to get results that contain only one
> > of the search_attributes.
> > e.g. a 32 "Peter Smith" who e.g. just has an entry
> > 24 32 "hair" "brown" (and no mice hobby) is also
> > found.
> > I need to get only results that match the search
> > completely.
> > I would be happy if you could help me again.
> > Thanks, Frederick
> 
> Oops.  You are quite correct.  Unfortunately, the
> query that you need is
> somewhat more complicated:
> SELECT people.people_id, people.name,
>        people.address,
>        people_attributes.attribute_name,   
>        people_attributes.attribute_value
> FROM people, people_attributes,
>        ( SELECT people_id, count(*) as match_count
>          FROM people_attributes, search_attributes 
>          WHERE search_id = 31
>          AND people_attributes.attribute_name = 
>              search_attributes.attribute_name
>          AND people_attributes.attribute_value ~* 
>              search_attributes.attribute_value )
> matches,
>        ( SELECT count(*) as attribute_count
>      FROM search_attributes
>          WHERE search_id = 31 ) searched
> WHERE people.people_id = people_attributes.people_id
>   AND people.people_id = matches.people_id
>   AND matches.match_count =
> searched.attribute_count;
> 
> This structure will also allow you to search for,
> say, 4 out of 5 items
> by changing the last line to:
>   AND matches.match_count >=
> (searched.attribute_count - 1);
> 
> Also, if you re-arrange the query slightly, you can
> turn it into a view.
> The trick is to have the search_id as an output
> column rather than a
> WHERE clause item in the sub-selects.
> 
> Have fun!
> 
> -Josh
> 
> ______AGLIO DATABASE
> SOLUTIONS___________________________
>                                        Josh Berkus
>   Complete information technology     
> josh@agliodbs.com
>    and data management solutions       (415)
> 565-7293
>   for law firms, small businesses        fax
> 621-2533
>     and non-profit organizations.      San Francisco
> > 
> > 
> > 
> 


__________________________________________________
Do You Yahoo!?
Get email alerts & NEW webcam video instant messaging with Yahoo! Messenger. http://im.yahoo.com


В списке pgsql-sql по дате отправления:

Предыдущее
От: "Josh Berkus"
Дата:
Сообщение: Re: How to enter lists into database: Problems with solution.
Следующее
От: Tom Lane
Дата:
Сообщение: Re: CHECK problem really OK now...