|
Treat the view as just another table, you can have multiple joins to the same table/view in any view.
Where there may be an issue is when you self reference via a chain of joins but MSSQL will tell you when you try and run the query.
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
Dear All,
rs3=st.executeQuery("select * from "+sdata[j]+" where Username='"+idata[i]+"'");
while(rs3.next())
{
%><td><%out.println(rs3.getString("Final_Grade"));%></td><%
}
In the above JSP Code,sdata[j] is the array of table names and idata[i] is the array of usernames. what i am trying to achieve is, to retrieve final_grade from the tables sdata[j] with the username==idata[i] . Since the username is existing in some table it displays the final grade, but when no record found in the table i want print it as "Null" instead of Final_Grade . Is this possible to implement?
|
|
|
|
|
|
Just count the returned rows:
int count = 0;
while (rs3.next())
{
count++;
}
if (count == 0)
{
%><td>Null</td><%
}
|
|
|
|
|
I'll admit I'm terrible at database planning or design, architecture.
I finally got my Angular 6 working, folders and files set, navbars and footers and I'm on seeding MongoDB.
In EF DAL, I was never able to figure out how to make relationships. Another topic later in the future.
But in MongoDB it looks pretty easy.
Past I would create a table called Countries and another table called states, and use a join to link them.
In MongoDB, I can add a field called states.
Should I proceed in the using country model and add the states to that.
Or populate the states separately, and use the country ID's to link them?
I'm looking for best practice here, and perhaps NoSQL is different than SQL in terms of planning and design.
I'm not sure what the future holds for me here, in terms of actually using Countries and States in drop downs.
public class WEBSITE_COUNTRIES
{
[BsonId]
[BsonRepresentation(BsonType.ObjectId)]
public ObjectId InternalId { get; set; }
public string Id { get; set; }
public string LongName { get; set; }
public string ShortName { get; set; }
public bool Enabled { get; set; }
public WEBSITE_STATES States { get; set; }
}
public class WEBSITE_STATES
{
[BsonId]
[BsonRepresentation(BsonType.ObjectId)]
public ObjectId InternalId { get; set; }
public string StateId { get; set; }
public string CountryCodee { get; set; }
public string LongName { get; set; }
public string ShortName { get; set; }
public bool Enabled { get; set; }
}
If it ain't broke don't fix it
Discover my world at jkirkerx.com
|
|
|
|
|
States should have a reference to country.
I would suggest that you reverse the meaning of 'InternalId' and 'Id'.
Most tables will have an 'Id' (what you are calling 'InternalId') but will not have the other.
You should call your current 'Id' something like 'DisplayId'.
|
|
|
|
|
I'll fly with this first and give it a try
public class WEBSITE_COUNTRIES
{
[BsonId]
[BsonRepresentation(BsonType.ObjectId)]
public ObjectId Id { get; set; }
public string DisplayId { get; set; }
public string LongName { get; set; }
public string ShortName { get; set; }
public bool Enabled { get; set; }
public WEBSITE_STATES States { get; set; }
}
public class WEBSITE_STATES
{
[BsonId]
[BsonRepresentation(BsonType.ObjectId)]
public ObjectId DisplayId { get; set; }
public string CountryId { get; set; }
public string CountryCode { get; set; }
public string LongName { get; set; }
public string ShortName { get; set; }
public bool Enabled { get; set; }
}
If it ain't broke don't fix it
Discover my world at jkirkerx.com
|
|
|
|
|
Your state table should have 'Id'
|
|
|
|
|
Disclaimer: I have only played around with MongoDB for fun. No real application experience yet.
One of the things I had read about a document based DB is to identify the aggregate. An aggregate will be a complete record. In your case, country on its own is not complete as it needs states as well. So, I would have a single document with something like this:
{
"_id": "DB generated Id",
"Name": "Country Name",
"States": [{
"Name": "State 1"
}, {
"Name": "State 2"
}]
}
Now, if states on themselves are a complete record, then another document to hold state list can be used. This will lead to duplication which is absolutely fine AFAIK in NoSQL World.
"It is easy to decipher extraterrestrial signals after deciphering Javascript and VB6 themselves.", ISanti[ ^]
|
|
|
|
|
OK. I'll see what happens after I seed the data and start consuming it.
Will let you know.
If it ain't broke don't fix it
Discover my world at jkirkerx.com
|
|
|
|
|
lw@zi wrote: country on its own is not complete as it needs states as well.
Rather certain that when I do a drop down for country it doesn't need states.
Something like an address page of course needs both country and state but it probably needs other things as well.
lw@zi wrote: Now, if states on themselves are a complete record, then another document to hold state list can be used. This will lead to duplication which is absolutely fin
Doesn't sound like a good idea to me.
Mongo already supports references. So if one wants a reference in country they can do that without hacking it themselves.
|
|
|
|
|
Disclaimer: this approach is rooted in Domain Driven Design, which is a common approach to NoSQL structuring. This is a super-rough look at entities vs value types in DDD.
I'm generally in agreement with @lw@zi, but it depends on your use case of states. If a data structure needs to be a domain-level entity, or is going to be directly referenced by multiple domain models, then it should have it's own store; otherwise it should be nested in a parent; it really has nothing to do with how much data is being tracked by an individual data structure.
If you will only ever present states in conjunction with countries, such as form fields and address resolution, without additional selection vectors then there is no reason to make it a reference and give it its own table.
If states are important on their own in the domain model or if multiple vectors might be used to access the data, such as if you have references to specific state agencies (NY DMV vs NC DMV, etc.), then you should make it a reference.
"Never attribute to malice that which can be explained by stupidity."
- Hanlon's Razor
|
|
|
|
|
For now, it's just a Country and state dropdown. Change the country and their states / provinces load in the states dropdown.
But I get what your saying. I'll have to study Domain Driven Design / Domain Level Entity.
If it ain't broke don't fix it
Discover my world at jkirkerx.com
|
|
|
|
|
I'm learning here, had to change the model again because I haven't wrote the states yet in the country document, and scratching my head on how to write the states. This is really different.
public class WEBSITE_COUNTRIES
{
[BsonId]
[BsonRepresentation(BsonType.ObjectId)]
public ObjectId Id { get; set; }
public string DisplayId { get; set; }
public string LongName { get; set; }
public string ShortName { get; set; }
public bool Enabled { get; set; }
[BsonIgnoreIfNull]
public IEnumerable<WEBSITE_STATES> States { get; set; }
}
{
"_id" : ObjectId("5b80576d4989bc2bfcf8ffc9"),
"DisplayId" : "5b80576d4989bc2bfcf8ffc9",
"LongName" : "Canada",
"ShortName" : "CA",
"Enabled" : true
}
If it ain't broke don't fix it
Discover my world at jkirkerx.com
|
|
|
|
|
Don't get wrapped around the axle; just treat it as you would a normal object with a collection property.
In that vein, the "BsonIgnoreIfNull" attribute isn't really necessary, it'll just serialize as "States": [] if there's no entries, and won't introduce any unexpected behaviors. Given your use case, and that you're just starting out with this, KISS will make life much easier.
"Never attribute to malice that which can be explained by stupidity."
- Hanlon's Razor
|
|
|
|
|
OK
If it ain't broke don't fix it
Discover my world at jkirkerx.com
|
|
|
|
|
What is with the "enabled" then?
Also if I was designing that per your requirements I wouldn't put in in the database at all.
I would have a file system document that provided the lists. Then a class to load it. That way if this is a real business, and this is just the first pass, then I already have an API (the class that loads it) to replace with a real external 3rd party source of address data.
|
|
|
|
|
That's a good idea, that data will rarely change.
I'll do that instead.
The enabled is just legacy thought from the past.
I've had customers tell me to remove eg. Hawaii from the list because of the high theft rate.
And maybe I should consider just putting it all in a console app like Richard mentioned.
If it ain't broke don't fix it
Discover my world at jkirkerx.com
|
|
|
|
|
jkirkerx wrote: I've had customers tell me to remove eg. Hawa
That would be a customer specific configuration then. So something that overrides the base.
|
|
|
|
|
hi all... i am having data in transaction table. the table structure is
trans_Id, Order_Id, Item_No, Order_Qty,Supply_Qty,Trans_Type,amnt_Climed_Type,amnt_Climed_Prcntage
Generally we are getting orders from client and based on the orders we are supplying material and at the
time of supply itself we are raising invoice. The invoice claiming conditions are based on the order terms and conditions. the conditions are like this.
1) total quantity with total amount
2) partial quantity with toal amount
3) total quantity with partial amount ( like 10% on supply)
4) partial quantity with partial amount (like 30% of supply with 50% of amount on supply)..
the transaction table contains data like this.
-------------------------------------------------------------------------------------------------------------
trans_Id | Order_Id | Item_No | Order_Qty | Supply_Qty | Trans_Type | amnt_Climed_Type | amnt_Climed_Prcntage
-------------------------------------------------------------------------------------------------------------
1 ordxyz 1 500 NULL O NULL NULL
2 ordxyz 2 1000 NULL O NULL NULL
3 ordxyz 3 100 NULL O NULL NULL
4 ordxyz 4 700 NULL O NULL NULL
5 ordxyz 5 600 NULL O NULL NULL
6 ordxyz 1 NULL 500 I F 100
7 ordxyz 2 NULL 300 I F 100
8 ordxyz 2 NULL 700 I P 30
9 ordxyz 4 NULL 500 I F 100
10 ordxyz 5 NULL 200 I P 70
11 ordxyz 5 NULL 150 I P 40
12 ordxyz 5 NULL 200 I P 30
13 ordxyz 5 NULL 120 I F 100
---------------------------------------------------------------------------------------------------------------
Trans_Type --- order or supply (o- for order) (I- for Invoice)
amnt_Climed_Type---- full amount climed or partially climed ( F-FULL 100% CLIMED , P-Partial amount climed.)
in the above data total we have 5 orders.. on that,
FOR item_No.1(row 1) full quantity supplyed(in row 6) and rised invoice 100% so item_No. 1 is completed.
FOR item_No.2(row 2) 300 quantity supplyed(in row 7) and rised invoice 100% so item_no.2 300 quantity completed. balance is 700 quantity
FOR item_No.2(row 2) 700 quantity supplyed(in row 8) and rised invoice 30% so item_no.2 700 quantity completed. but againg we have to clime same quantity for 70% (pending)
FOR item_No.3(row 3) 100 quantity not supplyed so item_no.3 (pending)
FOR item_No.4 (row 4) 500 Quantity supplyed (in row 9) and risied invoice for 100%. so 200 quantity is pending (pending)
FOR item_No.5 (row 5) we climed 200 quantity for 70% (in row 10) and again climed 200 quanty for 30% (in row 12) so this is also completed.
FOR item_No.5 (row 5) we climed 150 quantity for 40% (in row 11) and remaining 60% not climed (pending)
FOR item_No.5 (row 5) we climed 120 quantity for 100% and this is completed.
FOR item_No.5 (row 5) total 130 quantity has to clime for 100% and 150 quantity has to clime for 60% (pending)
now i want the output like only pending orders and pending amount orders for climing. i.e
---------------------------------------------------------------------------------------------------
Order_Id | Item_No | Order_Qty | pending_Supply_Qty | pending_Prcntage
---------------------------------------------------------------------------------------------------
ordxyz 2 1000 700 70
ordxyz 3 100 100 100
ordxyz 4 700 200 100
ordxyz 5 600 150 60
ordxyz 5 600 130 100
------------------------------------------------------------------------------------------------------
Please help me regarding this... Thanks in advance.
|
|
|
|
|
There is a lot of talk about it on my radar. I just implemented it on a .Net Core 2 Angular App.
I'm not sure what to think of it yet, still too early as I've only written 15 records or documents to it.
Very different indeed.
I like the part where I didn't have to create the table, and was able to just write to it.
I'll have to write the Angular backend to it first so I can read the data.
Just curious.
If it ain't broke don't fix it
Discover my world at jkirkerx.com
|
|
|
|
|
I like it; I'd say it is the document-db version of sqlite
..but would not use it for records or relational data. Just documents and other blobs.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
|
|
|
|
|
I used SQLite on the current version of my website and it works great!
Glad to hear the comparison between the two.
So for small stuff like say:
Countries/States
Messages
Notes
Portfolios/images
it's fine
But for large relations use SQL
Products/Categories/Vendors/Filters
Store Orders
I'm just trying to get an idea of how far I can push MongoDB without reinventing the wheel.
MongoDB would take the load off SQL Server.
If it ain't broke don't fix it
Discover my world at jkirkerx.com
|
|
|
|
|
jkirkerx wrote: So for small stuff like say: Also for large documents. A MongoDB cache can span several computers, making it ideal for static blobs that are to be served.
SQL is usually optimized for relational data that changes frequently. MongoDB is optimized to serve cached blobs.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
|
|
|
|
|
oh!
Like image data?
If it ain't broke don't fix it
Discover my world at jkirkerx.com
|
|
|
|