Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 207
  • Last Modified:

ADo select double numbers

I have a table with
Name, Number, Extention, Group
Eacht name has 2 extentions but the number is the same.

Now I need to selct one name from each Number. I am still getting double records as result.
I have
Jack, 3, 124, Marketing and I have Jack 1, 3, 123, Marketing
I need to select only one of these
My code is 
     SQL.Add('Select  distinct M_number, M_name, M_Extention, Group');
     SQL.Add('From Employees);
     SQL.Add('Where (Group = '+QuotedStr(Group)+')');
 
 
What is wrong in this?

Open in new window

0
Nayel
Asked:
Nayel
  • 5
  • 4
1 Solution
 
Geert GOracle dbaCommented:
you are selecting multiple different ones with distinct not 1

and use parameters for performance, allways better !
and Group is a reserved word (bettter to use other column name)





as i dunno what database ... for oracle:
SELECT M_number, M_name, M_Extention, Group
FROM (SELECT M_number, M_name, M_Extention, Group, RANK() OVER (PARTITION BY M_Number ORDER BY M_Number) X
            WHERE GROUP = :AGRoup)
WHERE X = 1

Open in new window

0
 
NayelAuthor Commented:
I am using Access
0
 
Geert GOracle dbaCommented:
that's not a database ... it's a flat file :)

SELECT E.*
FROM Employees E,
  (SELECT M_Number, Min(M_Name) XName FROM Employees Group By M_Number) X
WHERE E.M_Number = X.M_Number
  AND E.M_Name = X.XName

0
Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 
NayelAuthor Commented:
No no.. I am using Delphi which is connected to Access. And the query should be written in an ADOQUERY
0
 
Geert GOracle dbaCommented:
just kidding
var AdoQuery: TAdoQuery;
begin
  AdoQuery.SQL.Text := 
    'SELECT E.* FROM Employees E,           '+
    '  (SELECT M_Number, Min(M_Name) XName  '+ 
    '   FROM Employees Group By M_Number) X '+
    'WHERE E.M_Number = X.M_Number          '+
    '  AND E.M_Name = X.XName               '+
    '  AND E.Group = :GROUP                 ';
  AdoQuery.Parameters.ParamByName('GROUP').Value := Group;
  AdoQuery.Open;

Open in new window

0
 
NayelAuthor Commented:
Getting a fault.
0
 
Geert GOracle dbaCommented:
and that would be ?

i tried to smell what it was, but i have a small cold ...
0
 
NayelAuthor Commented:
A syntaxerror in expression Min(M_Name) XName
0
 
Geert GOracle dbaCommented:
I'm not supergood in access,
I try to stay away from it,
but try this:
var AdoQuery: TAdoQuery;
begin
  AdoQuery.SQL.Text := 
    'SELECT E.* FROM Employees E,              '+
    '  (SELECT M_Number, Min(M_Name) AS XName  '+ 
    '   FROM Employees Group By M_Number) AS X '+
    'WHERE E.M_Number = X.M_Number             '+
    '  AND E.M_Name = X.XName                  '+
    '  AND E.Group = :GROUP                    ';
  AdoQuery.Parameters.ParamByName('GROUP').Value := Group;
  AdoQuery.Open;

Open in new window

0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

  • 5
  • 4
Tackle projects and never again get stuck behind a technical roadblock.
Join Now