Multiple JOIN in Access

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • code green
    Recognized Expert Top Contributor
    • Mar 2007
    • 1726

    Multiple JOIN in Access

    I cannot get the following query correct. Please can somebody put me right
    Code:
    SELECT [Order Number],[Date Ordered] FROM [Order] 
    INNER JOIN [OrderDetail] ON [OrderDetail].[OrderSequenceNumber] = [Order].[Order Sequence Number]
    INNER JOIN [PaymentHistory] ON [PaymentHistory].[OrderNumber] = [Order].[Order Sequence Number]
    INNER JOIN [Person] invoice ON [Person].[ContactID] = [Order].[InvoiceContactID]
    INNER JOIN [Person] deliver ON [Person].[ContactID] = [Order].[DeliverContactID]						
    WHERE [Order].[Order Sequence Number] > 88950
    ** Throws the error Syntax error Missing Operator **
    I have also tried the "nested" idea but this also fails
    Code:
    SELECT * FROM [Order]
    INNER JOIN ((([OrderDetail] 
    INNER JOIN [PaymentHistory] 
    INNER JOIN [Person] ON [Person].[ContactID] = [Order].[InvoiceContactID])
    ON [PaymentHistory].[OrderNumber] = [Order].[Order Sequence Number])
    ON [OrderDetail].[OrderSequenceNumber] = [Order].[Order Sequence Number])
    ON [Order].[Order Sequence Number] > 88950 ** Throws the error Syntax error in From clause **[/
    I have fiddled with the bracket arrangement but this has me beaten.
    Thanks
  • FishVal
    Recognized Expert Specialist
    • Jun 2007
    • 2656

    #2
    SELECT [Order Number],[Date Ordered] FROM [Order]
    INNER JOIN [OrderDetail] ON [OrderDetail].[OrderSequenceNu mber] = [Order].[Order Sequence Number]
    INNER JOIN [PaymentHistory] ON [PaymentHistory].[OrderNumber] = [Order].[Order Sequence Number]
    INNER JOIN [Person] invoice ON [Person].[ContactID] = [Order].[InvoiceContactI D]
    INNER JOIN [Person] deliver ON [Person].[ContactID] = [Order].[DeliverContactI D]
    WHERE [Order].[Order Sequence Number] > 88950

    SELECT * FROM [Order]
    INNER JOIN ((([OrderDetail]
    INNER JOIN [PaymentHistory]
    INNER JOIN [Person] ON [Person].[ContactID] = [Order].[InvoiceContactI D])
    ON [PaymentHistory].[OrderNumber] = [Order].[Order Sequence Number])
    ON [OrderDetail].[OrderSequenceNu mber] = [Order].[Order Sequence Number])
    ON [Order].[Order Sequence Number] > 88950

    Hi!
    The problem parts I've found are bolded.

    Comment

    • code green
      Recognized Expert Top Contributor
      • Mar 2007
      • 1726

      #3
      Yes, but I don't know what the problem is.

      Comment

      • FishVal
        Recognized Expert Specialist
        • Jun 2007
        • 2656

        #4
        Originally posted by code green
        Yes, but I don't know what the problem is.
        Syntax problem. Why not to use query builder to build SQL statement?

        Comment

        • code green
          Recognized Expert Top Contributor
          • Mar 2007
          • 1726

          #5
          Because the query builder is for wimps.
          No, I cannot use the query builder because there are no 'relationships' between the tables so JOINs fail.
          And before you start it is not my database.
          However the query works this way.
          It may not be exactly what I wanted but at least it runs
          Code:
          SELECT * FROM [Order],[OrderDetail],[PaymentHistory],[Person]
          WHERE [Order].[Order Sequence Number] > 88950
          AND [Person].[ContactID] = [Order].[InvoiceContactID]
          AND [PaymentHistory].[OrderNumber] = [Order].[Order Sequence Number]
          AND [OrderDetail].[OrderSequenceNumber] = [Order].[Order Sequence Number]
          I suppose my question should be
          WHAT IS THE SYNTAX TO JOIN THREE TABLES IN ACCESS?
          I can do this many ways in other SQL but not Access

          Comment

          • FishVal
            Recognized Expert Specialist
            • Jun 2007
            • 2656

            #6
            Originally posted by code green
            Because the query builder is for wimps.
            No, I cannot use the query builder because there are no 'relationships' between the tables so JOINs fail.
            And before you start it is not my database.
            However the query works this way.
            It may not be exactly what I wanted but at least it runs
            Code:
            SELECT * FROM [Order],[OrderDetail],[PaymentHistory],[Person]
            WHERE [Order].[Order Sequence Number] > 88950
            AND [Person].[ContactID] = [Order].[InvoiceContactID]
            AND [PaymentHistory].[OrderNumber] = [Order].[Order Sequence Number]
            AND [OrderDetail].[OrderSequenceNumber] = [Order].[Order Sequence Number]
            I suppose my question should be
            WHAT IS THE SYNTAX TO JOIN THREE TABLES IN ACCESS?
            I can do this many ways in other SQL but not Access
            Oh ye. Access is whole for whimps. A brave one likes difficulties.

            Relationships are needed to let query builder make joins itself, user is welcome to draw its own, I hope at least you've determined what are the relationships between tables mentioned. As for me I prefer to let Access deal with all these nested brackets his way as he likes it.

            Comment

            Working...