Smart questions
Smart answers
Smart people
INTELLIGENT WORK FORUMS
FOR COMPUTER PROFESSIONALS

Member Login

Come Join Us!

Are you a
Computer / IT professional?
Join Tek-Tips now!
  • Talk With Other Members
  • Be Notified Of Responses
    To Your Posts
  • Keyword Search
  • One-Click Access To Your
    Favorite Forums
  • Automated Signatures
    On Your Posts
  • Best Of All, It's Free!

Join Tek-Tips
*Tek-Tips's functionality depends on members receiving e-mail. By joining you are opting in to receive e-mail.

LINK TO THIS FORUM!

Add Stickiness To Your Site By Linking To This Professionally Managed Technical Forum.
Just copy and paste the
code below into your site.

Partner With Us!

"Best Of Breed" Forums Add Stickiness To Your Site
Partner Button
(Download This Button Today!)

Feedback

"...An excellent site which has quite possibly prevented me from having a mental/nervous breakdown..."

Geography

Where in the world do Tek-Tips members come from?
AlienX69 (TechnicalUser)
15 Aug 12 12:33
First, I'm using MS Access as a READ ONLY Front-End to a Oracle dB via ODBC.

I have a query that I cannot seem to figure out why it is not sorting correctly.

Trying to sort the PATH_NAME field first, in particular the 8th thru 10th characters. So I thought I would try the "Mid" function. Also need to sort by DRAWING_TYPE, then DRAWING_NO as well.

The results seem to ignore the Mid function, first sorting UPPERCASE then lowercase. This was the reason I chose to use the Mid function, to ignore the first 7 characters. As you will see in the results the first character is a drive letter, some are uppercase, some are lowercase.

CODE -->

SELECT PD_ACT_PDTABLE_121.PATH_NAME AS Path, Left([PD_ACT_PDTABLE_121.DRAWING_TYPE],3) AS [Draw Type], PD_ACT_PDTABLE_121.DRAWING_NO AS [Draw #], PD_ACT_PDTABLE_121.DRAWING_TITLE AS Title, PD_ACT_PDTABLE_126.DRAWING_SCALE AS Scale, PD_ACT_PDTABLE_126.CELL_FILE_SPEC AS [Cell File], PD_ACT_PDTABLE_126.CELL_PATH_NAME AS [Cell Path], PD_ACT_PDTABLE_121.LAST_REVISION_NO AS [Last Rev]
FROM PD_ACT_PDTABLE_121 INNER JOIN PD_ACT_PDTABLE_126 ON PD_ACT_PDTABLE_121.DRAWING_TYPE = PD_ACT_PDTABLE_126.DRAWING_TYPE
ORDER BY Mid([PD_ACT_PDTABLE_121.PATH_NAME],8,3), PD_ACT_PDTABLE_121.DRAWING_TYPE, PD_ACT_PDTABLE_121.DRAWING_NO
union SELECT PD_ANI_PDTABLE_121.PATH_NAME AS Path, Left([PD_ANI_PDTABLE_121.DRAWING_TYPE],3) AS [Draw Type], PD_ANI_PDTABLE_121.DRAWING_NO AS [Draw #], PD_ANI_PDTABLE_121.DRAWING_TITLE AS Title, PD_ANI_PDTABLE_126.DRAWING_SCALE AS Scale, PD_ANI_PDTABLE_126.CELL_FILE_SPEC AS [Cell File], PD_ANI_PDTABLE_126.CELL_PATH_NAME AS [Cell Path], PD_ANI_PDTABLE_121.LAST_REVISION_NO AS [Last Rev]
FROM PD_ANI_PDTABLE_121 INNER JOIN PD_ANI_PDTABLE_126 ON PD_ANI_PDTABLE_121.DRAWING_TYPE = PD_ANI_PDTABLE_126.DRAWING_TYPE
union SELECT PD_BGLY_PDTABLE_121.PATH_NAME AS Path, Left([PD_BGLY_PDTABLE_121.DRAWING_TYPE],3) AS [Draw Type], PD_BGLY_PDTABLE_121.DRAWING_NO AS [Draw #], PD_BGLY_PDTABLE_121.DRAWING_TITLE AS Title, PD_BGLY_PDTABLE_126.DRAWING_SCALE AS Scale, PD_BGLY_PDTABLE_126.CELL_FILE_SPEC AS [Cell File], PD_BGLY_PDTABLE_126.CELL_PATH_NAME AS [Cell Path], PD_BGLY_PDTABLE_121.LAST_REVISION_NO AS [Last Rev]
FROM PD_BGLY_PDTABLE_121 INNER JOIN PD_BGLY_PDTABLE_126 ON PD_BGLY_PDTABLE_121.DRAWING_TYPE = PD_BGLY_PDTABLE_126.DRAWING_TYPE
UNION SELECT PD_CCU_PDTABLE_121.PATH_NAME AS Path, Left([PD_CCU_PDTABLE_121.DRAWING_TYPE],3) AS [Draw Type], PD_CCU_PDTABLE_121.DRAWING_NO AS [Draw #], PD_CCU_PDTABLE_121.DRAWING_TITLE AS Title, PD_CCU_PDTABLE_126.DRAWING_SCALE AS Scale, PD_CCU_PDTABLE_126.CELL_FILE_SPEC AS [Cell File], PD_CCU_PDTABLE_126.CELL_PATH_NAME AS [Cell Path], PD_CCU_PDTABLE_121.LAST_REVISION_NO AS [Last Rev]
FROM PD_CCU_PDTABLE_121 INNER JOIN PD_CCU_PDTABLE_126 ON PD_CCU_PDTABLE_121.DRAWING_TYPE = PD_CCU_PDTABLE_126.DRAWING_TYPE; 

This is a partial list of the results (also see attachment for complete results):

CODE -->

Path	Draw Type	Draw #	Title	Scale	Cell File	Cell Path	Last Rev
D:\pds\act\draw\dgn\	643	FAA	FAA	"3/32""=1'"	dwg_643.cel	D:\pds\act\draw\cell\	
D:\pds\act\draw\dgn\	643	G6-AB0-007	F-500 EQUIP ARRANGE	"3/32""=1'"	dwg_643.cel	D:\pds\act\draw\cell\	
D:\pds\act\draw\dgn\	643	G6ABO001	0175-ACT-G6-ABO-001 COL 0 TO 8 @EL 21'	"3/32""=1'"	dwg_643.cel	D:\pds\act\draw\cell\	
D:\pds\act\draw\dgn\	643	G6ABO002	0175-ACT-G6-ABO-002 COL 0 TO 8 @EL 49'	"3/32""=1'"	dwg_643.cel	D:\pds\act\draw\cell\	
D:\pds\act\draw\dgn\	643	G6ABO003	0175-ACT-G6-ABO-003 COL 8 TO 15 @EL 21'	"3/32""=1'"	dwg_643.cel	D:\pds\act\draw\cell\	
D:\pds\bgly\draw\643\	643	FP415	MAIN LVL LOOP REACT/FLASH STRIP FPs	"1/4""=1'"			
D:\pds\bgly\draw\643\	643	FP636	BUSS REACT/FLASH STRIP 2ND LVL	"1/4""=1'"			
D:\pds\bgly\draw\643\	643	M1AC8002	GRD FLR LOOP REACT/FLASH STRIP	"1/4""=1'"			
D:\pds\bgly\draw\643\	643	M1AC8005	MAIN LVL LOOP REACT/FLASH STRIP	"1/4""=1'"			
D:\pds\ccu\draw\644\	644	M1AD6001	EQUIPMENT ARRANG. @ GRADE	"1/8""=1'"			
D:\pds\ccu\draw\644\	644	M1AD6002	"EQUIPMENT ARRANG. @ EL.52'-10"""	"1/8""=1'"			
D:\pds\ccu\draw\644\	644	M1AD6003	EQUIP. ARRANG. SECTION LOOKING NORTH	"1/8""=1'"			
D:\pds\ccu\draw\644\	644	M1AD6004	EQUIP. ARRANG. SECTION LOOKING WEST	"1/8""=1'"			
d:\pds\act\draw\dgn\	643	0175-ACT-G6-AG0-010	"PLAN AT ELEVATION 21'-0"""	"3/32""=1'"	dwg_643.cel	D:\pds\act\draw\cell\	
d:\pds\act\draw\elec\	731	0175-ACT-I3-AB0-001	INSTR. WIRING PLAN -AREA 'B' NO.- GRADEL	"1/4""=1'"			
d:\pds\act\draw\elec\	731	0175-ACT-I3-AB0-002	INSTR. WIRING PLAN -AREA 'A' NO.- GRADEL	"1/4""=1'"			
d:\pds\act\draw\elec\	731	0175-ACT-I3-AB0-003	INSTR. WIRING PLAN -AREA 'B' SO.- GRADEL	"1/4""=1'"			
d:\pds\bgly\draw\664\	664	P1-AE4-001	PIPING LOCATION PLAN	"1/4""=1'"			
d:\pds\bgly\draw\664\	664	P1-AE4-002	PIPING LOCATION PLAN	"1/4""=1'"			
d:\pds\bgly\draw\664\	664	P1AH6001	E/W PIPERACK @ GLYOXAL	"1/4""=1'" 
Andrzejek (Programmer)
15 Aug 12 13:43
Try something like this so ORACLE can understand:

CODE

Select ...
Union Select...
Union Select ...

ORDER BY SUBSTR([PD_ACT_PDTABLE_121.PATH_NAME],8,3), ... 

Have fun.

---- Andy

AlienX69 (TechnicalUser)
15 Aug 12 14:19
Got "Undefined function 'SubStr' in expression" leaving Order By after first SELECT string ....

ORDER BY SubStr([PD_ACT_PDTABLE_121.PATH_NAME],8,3), PD_ACT_PDTABLE_121.DRAWING_TYPE, PD_ACT_PDTABLE_121.DRAWING_NO

Reminder .... using MS Access to build queries via ODBC connection to Oracle.

If I put Order By at the end as you shown in your example, I get "Invalid bracketing of name '[PD_ACT_PDTABLE_121.PATH_NAME]'." message.

CODE -->

SELECT PD_ACT_PDTABLE_121.PATH_NAME AS Path, Left([PD_ACT_PDTABLE_121.DRAWING_TYPE],3) AS [Draw Type], PD_ACT_PDTABLE_121.DRAWING_NO AS [Draw #], PD_ACT_PDTABLE_121.DRAWING_TITLE AS Title, PD_ACT_PDTABLE_126.DRAWING_SCALE AS Scale, PD_ACT_PDTABLE_126.CELL_FILE_SPEC AS [Cell File], PD_ACT_PDTABLE_126.CELL_PATH_NAME AS [Cell Path], PD_ACT_PDTABLE_121.LAST_REVISION_NO AS [Last Rev]
FROM PD_ACT_PDTABLE_121 INNER JOIN PD_ACT_PDTABLE_126 ON PD_ACT_PDTABLE_121.DRAWING_TYPE = PD_ACT_PDTABLE_126.DRAWING_TYPE
union SELECT PD_ANI_PDTABLE_121.PATH_NAME AS Path, Left([PD_ANI_PDTABLE_121.DRAWING_TYPE],3) AS [Draw Type], PD_ANI_PDTABLE_121.DRAWING_NO AS [Draw #], PD_ANI_PDTABLE_121.DRAWING_TITLE AS Title, PD_ANI_PDTABLE_126.DRAWING_SCALE AS Scale, PD_ANI_PDTABLE_126.CELL_FILE_SPEC AS [Cell File], PD_ANI_PDTABLE_126.CELL_PATH_NAME AS [Cell Path], PD_ANI_PDTABLE_121.LAST_REVISION_NO AS [Last Rev]
FROM PD_ANI_PDTABLE_121 INNER JOIN PD_ANI_PDTABLE_126 ON PD_ANI_PDTABLE_121.DRAWING_TYPE = PD_ANI_PDTABLE_126.DRAWING_TYPE
union SELECT PD_BGLY_PDTABLE_121.PATH_NAME AS Path, Left([PD_BGLY_PDTABLE_121.DRAWING_TYPE],3) AS [Draw Type], PD_BGLY_PDTABLE_121.DRAWING_NO AS [Draw #], PD_BGLY_PDTABLE_121.DRAWING_TITLE AS Title, PD_BGLY_PDTABLE_126.DRAWING_SCALE AS Scale, PD_BGLY_PDTABLE_126.CELL_FILE_SPEC AS [Cell File], PD_BGLY_PDTABLE_126.CELL_PATH_NAME AS [Cell Path], PD_BGLY_PDTABLE_121.LAST_REVISION_NO AS [Last Rev]
FROM PD_BGLY_PDTABLE_121 INNER JOIN PD_BGLY_PDTABLE_126 ON PD_BGLY_PDTABLE_121.DRAWING_TYPE = PD_BGLY_PDTABLE_126.DRAWING_TYPE
UNION SELECT PD_CCU_PDTABLE_121.PATH_NAME AS Path, Left([PD_CCU_PDTABLE_121.DRAWING_TYPE],3) AS [Draw Type], PD_CCU_PDTABLE_121.DRAWING_NO AS [Draw #], PD_CCU_PDTABLE_121.DRAWING_TITLE AS Title, PD_CCU_PDTABLE_126.DRAWING_SCALE AS Scale, PD_CCU_PDTABLE_126.CELL_FILE_SPEC AS [Cell File], PD_CCU_PDTABLE_126.CELL_PATH_NAME AS [Cell Path], PD_CCU_PDTABLE_121.LAST_REVISION_NO AS [Last Rev]
FROM PD_CCU_PDTABLE_121 INNER JOIN PD_CCU_PDTABLE_126 ON PD_CCU_PDTABLE_121.DRAWING_TYPE = PD_CCU_PDTABLE_126.DRAWING_TYPE
ORDER BY SubStr([PD_ACT_PDTABLE_121.PATH_NAME],8,3), PD_ACT_PDTABLE_121.DRAWING_TYPE, PD_ACT_PDTABLE_121.DRAWING_NO; 
AlienX69 (TechnicalUser)
15 Aug 12 14:28
SUBSTRING(string, start, length). In Microsoft Access and MySQL, you can use. MID(string, start, length). In Oracle, use. SUBSTR(string, start, length). A good ...


https://www.google.com/search?q=SubStr+in+MS+Access&rls=com.microsoft:en-us:IE-SearchBox&ie=UTF-8&oe=UTF-8&sourceid=ie7
Andrzejek (Programmer)
15 Aug 12 16:17
Try (since you called this field Path):

CODE

Select ...
Union Select...
Union Select ...

ORDER BY SUBSTR(Path,8,3), ... 

or (since it is your first field)

CODE

Select ...
Union Select...
Union Select ...

ORDER BY SUBSTR(1,8,3), ... 

Have fun.

---- Andy

Reply To This Thread

Posting in the Tek-Tips forums is a member-only feature.

Click Here to join Tek-Tips and talk with other members!

Close Box

Join Tek-Tips® Today!

Join your peers on the Internet's largest technical computer professional community.
It's easy to join and it's free.

Here's Why Members Love Tek-Tips Forums:

Register now while it's still free!

Already a member? Close this window and log in.

Join Us             Close