Solved

ADo select double numbers

Posted on 2009-04-03
9
192 Views
Last Modified: 2013-11-23
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
Comment
Question by:Nayel
  • 5
  • 4
9 Comments
 
LVL 37

Expert Comment

by:Geert Gruwez
ID: 24057849
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
 

Author Comment

by:Nayel
ID: 24057862
I am using Access
0
 
LVL 37

Expert Comment

by:Geert Gruwez
ID: 24057904
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
 

Author Comment

by:Nayel
ID: 24057920
No no.. I am using Delphi which is connected to Access. And the query should be written in an ADOQUERY
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 37

Expert Comment

by:Geert Gruwez
ID: 24057950
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
 

Author Comment

by:Nayel
ID: 24058035
Getting a fault.
0
 
LVL 37

Expert Comment

by:Geert Gruwez
ID: 24058039
and that would be ?

i tried to smell what it was, but i have a small cold ...
0
 

Author Comment

by:Nayel
ID: 24058073
A syntaxerror in expression Min(M_Name) XName
0
 
LVL 37

Accepted Solution

by:
Geert Gruwez earned 50 total points
ID: 24058080
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

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article explains how to create forms/units independent of other forms/units object names in a delphi project. Have you ever created a form for user input in a Delphi project and then had the need to have that same form in a other Delphi proj…
Creating an auto free TStringList The TStringList is a basic and frequently used object in Delphi. On many occasions, you may want to create a temporary list, process some items in the list and be done with the list. In such cases, you have to…
This tutorial gives a high-level tour of the interface of Marketo (a marketing automation tool to help businesses track and engage prospective customers and drive them to purchase). You will see the main areas including Marketing Activities, Design …
Windows 10 is mostly good. However the one thing that annoys me is how many clicks you have to do to dial a VPN connection. You have to go to settings from the start menu, (2 clicks), Network and Internet (1 click), Click VPN (another click) then fi…

910 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

21 Experts available now in Live!

Get 1:1 Help Now