JakeRattner1
3 years ago

# Formula Queries - Finding Min/Max of Value Using Foreign Key in Other Table

Hi QB Community,

I'm excited about the new Formula Query and am trying to use it to find the minimum and max fields in a seperate table.

GetFieldValues(GetRecords("{249.EX.'"& [StateID] &"'}", "DBID"), 212)

In the query, I'm returning a text list that shows all the 'prices' (fid212), where the 'stateID' (fid249) matches the 'StateID' on the record.  This part works.

Now I'm trying to figure out for to derive the min and/or max from the resulting text list.

I've used SearchAndReplace to modify the text list in a few different ways to that I can pass it into the Max function, but no luck yet.

Do you konw how to do this??  Thanks!

------------------------------
Jake
------------------------------

### 11 Replies

• At this time we are only able to Sum the values that are returned or count them with the size function. But there is no max function yet.
One assumes that they will be offering this in the near future

------------------------------
Mark Shnier (YQC)
mark.shnier@gmail.com
------------------------------
• Hi Mark,

Thanks for replying so fast.  Agreed.  A ready-made function doesn't exist and hopfully it will be soon. I'm hoping there will be a ton of new functions once Quickbase is ready.

In the meantime, I'm wondering if there is a creative solution for getting the min/max out of a text list.  For example, I can use get the min/max from the text list by using the following formula:

Max(
ToNumber(Part([Text],1,";")),
ToNumber(Part([Text],2,";")),
ToNumber(Part([Text],3,";")),
ToNumber(Part([Text],4,";")),
ToNumber(Part([Text],5,";")),
ToNumber(Part([Text],6,";")),
ToNumber(Part([Text],7,";"))
)

But the above seems like a poor approach because I may have to add "ToNumber(Part([Text],1000,";")" some day soon.  Updating formulas like that is a nightmare.

Thanks!
Jake

------------------------------
Jake Rattner
------------------------------
• Jake, until we get a function like MaxValues, you will just need to "enjoy" using Copy/Paste to grow your formula to keep up with your data.

------------------------------
Mark Shnier (YQC)
mark.shnier@gmail.com
------------------------------
• Solved... (work around)
Put a query function in your "prices" table (the one you are querying) that counts the number of records that have a GTE (greater than or equal to) price and same StateID.
If it returns "1" then it's the max price for that StateID.

So with:
fid212 is Price
fid249 is StateID

Formula Checkbox "First Max Price for StateID", fid999

//Query parts
var text GTEPrice = "{212.GTE.'"& [Price] & "'}";
var text SameState = "{249.EX.'"& [StateID] & "'}";
var text RIDLTE = "{3.LTE.'"& [Record ID#] & "'}";  //will find the first record if multiple "prices" have the same price.

//Number of Records = 1 if it's the First Max Price for StateID
1 = Size(GetRecords(\$GTEPrice &"AND"& \$SameState &"AND"& \$RIDLTE));

Then, in your other table, have another query function that finds that record and sum values (of that one record) to get the max price.

Formula Numeric "Max Price for State"
//Query parts
var text SameState = "{249.EX.'"& [StateID] & "'}";
var text IsFirstMax = "{999.EX.'1'}"; //'1' finds a true checkbox

SumValues(GetRecords(\$SameState &"AND"& \$IsFirstMax, "DBID"), 212)

​​Let me know if this works for you!​

------------------------------
Matt Stephens
------------------------------
• I'm trying to use this method and it seems like there is a problem with the logic.

Not counting the state part of the equation, if I have records:
RID    Value
1          10
2         10
3         200
4         100

Record 1 only has 1 record that is GTE 10 and has a RID LTE 1 (itself)
Record 2 has 2 records that are GTE 10 and has a RID LTE 2 (itself and #1)
Record 3 is back down to 1 record that is GTE 200 and has a RID LTE 3 (itself)
Record 4 has 2 records that are GTE 100 and has a RID LTE 4 (itself and #3)

I can't figure out how to work the GTE and LTE (as well as LT, GT, XEX, etc.) to get a unique value for RID 3, whether it is a 0 or 1.

Any suggestions? Something I might be missing?

------------------------------
Edward Hefter
www.Sutubra.com
------------------------------