Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 4380808
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 21, 20262026-05-21T12:34:33+00:00 2026-05-21T12:34:33+00:00

I’ve got three related SQL tables, simplified they look like this: ShopTable [ShopID] ShelfTable

  • 0

I’ve got three related SQL tables, simplified they look like this:

ShopTable
  [ShopID]

ShelfTable
  [ShelfID]
  [ShopID]

InventoryTable
  [ShelfID]
  [Value]

[ShopID] and [ShelfID] are relations. Now what I want to do is get the SUM of [Value] for one [ShopID], but this obviously won’t work since [ShopID] ain’t part of InventoryTable:

SELECT SUM([Value]) WHERE [ShopID] = '1'

How do I have to write the query to filter the InventoryTable using the ShopID?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-21T12:34:33+00:00Added an answer on May 21, 2026 at 12:34 pm

    This is a fundamental question about relations between tables, so I’ll provide some detail, hoping that you can use some of these ideas when writing SQL queries in the future.

    Let’s start with one basic thing first. [ShopID] could refer to two different but related columns, one in [ShopTable] and one in [ShelfTable]. The same things applies to [ShelfID]. It’s useful to always specify the table.

    You describe [ShopID] and [ShelfID] as “relations.” As Damien_The_Unbeliever has commented, those columns are, in fact, two pairs of primary and foreign keys. That is, [ShelfTable].[ShelfID] identifies a “shelf” record, and [InventoryTable].[ShelfID] relates an “inventory item” (whatever that is) to a “shelf.” (It’s not always possible to interpret rows in a database this naively, but I’m willing to guess I’m not too far off from reality.)

    Likewise, each “shelf” belongs to one “shop,” and [ShelfTable].[ShopID] refers to that specific “shop.” Notice that because we have the value of [ShopID] already (I’ll call it “@MyShopID”), we don’t even need the [ShopTable] here. We can just use [ShelfTable].[ShopID] to filter for the “shelves” we’re interested in.

    You’re asking to get the sum total of [InventoryTable].[Value] for one [ShopID] value, but [ShopID] doesn’t show up in [InventoryTable]. That’s where your (inner) join comes into play. You know that you’ll be adding up values from [InventoryTable], but you’ve got to specify the particular “shop.” You specify @MyShopID for [ShelfTable].[ShelfID], which will do your filtering in [InventoryTable] for you.

    One final thing before composing the query. I’m assuming that you haven’t oversimplified your tables too much, and that [Value] is the total value of each “inventory item,” and not just a unit value. If it wasn’t, we’d have to multiply values by quantities, etc., but I’ll let you check your own work here.

    So, here’s what we do:

    • We select FROM the [InventoryTable]
    • but we INNER JOIN to the [ShelfTable] on [ShelfID] from both tables
    • and we only want “shelves” from one “shop,” i.e. WHERE [ShelfTable].[ShopID] = @MyShopID
    • and then we SELECT the SUM([InventoryTable].[Value])

    and we’re done. In SQL, let’s remove the brackets, provide some table aliases, and we’ll get a query that looks like this:

    SELECT SUM(inv.Value)
    FROM InventoryTable AS inv
    INNER JOIN ShelfTable AS shf ON shf.ShelfID = inv.ShelfID
    WHERE shf.ShopID = @MyShopID
    ;
    

    Here are a few take-away points to consider. Notice we handled the FROM clause first. You’ll always want to do that.

    You’ll also want a “driving table” to start with, in this case, [InventoryTable]. The other tables in your join add extra information and provide you a means to filter, but don’t otherwise interfere with your summing up. More complex queries don’t offer such an obvious luxury, but we’re not getting too fancy here.

    You’ll also note, just briefly, that because [ShelfID] is a primary key in [ShelfTable], those [ShelfID]’s are unique values in [ShelfTable], and so each “inventory” thing belongs to a single “shelf.” So the join won’t cause us to double-count values. That’s a good thing to remember when you’re not dealing with primary and foreign keys, like we’re doing here.

    Hope that helps. And I hope I didn’t come across as too pedantic.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I've got a string that has curly quotes in it. I'd like to replace
I'm parsing an RSS feed that has an ’ in it. SimpleXML turns this
I have some data like this: 1 2 3 4 5 9 2 6
i got an object with contents of html markup in it, for example: string
link Im having trouble converting the html entites into html characters, (&# 8217;) i
Does anyone know how can I replace this 2 symbol below from the string
this is what i have right now Drawing an RSS feed into the php,
I have this code: - (void)parser:(NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock { NSString *someString = [[NSString
I have just tried to save a simple *.rtf file with some websites and
I want to count how many characters a certain string has in PHP, but

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.