Solved

ADo select double numbers

Posted on 2009-04-03
9
193 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
Live: Real-Time Solutions, Start Here

Receive instant 1:1 support from technology experts, using our real-time conversation and whiteboard interface. Your first 5 minutes are always free.

 

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
 
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

Courses: Start Training Online With Pros, Today

Brush up on the basics or master the advanced techniques required to earn essential industry certifications, with Courses. Enroll in a course and start learning today. Training topics range from Android App Dev to the Xen Virtualization Platform.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
Correct Component for Shopping Cart. 2 105
Delphi 2 59
how to update exe applicatio from internet ? 6 76
Tvertscrollbox like a whatsapp layout 5 26
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…
In my programming career I have only very rarely run into situations where operator overloading would be of any use in my work.  Normally those situations involved math with either overly large numbers (hundreds of thousands of digits or accuracy re…
This Micro Tutorial hows how you can integrate  Mac OSX to a Windows Active Directory Domain. Apple has made it easy to allow users to bind their macs to a windows domain with relative ease. The following video show how to bind OSX Mavericks to …
Nobody understands Phishing better than an anti-spam company. That’s why we are providing Phishing Awareness Training to our customers. According to a report by Verizon, only 3% of targeted users report malicious emails to management. With compan…

785 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