Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

GP misunderstood what an "ambiguous join" is. Rather than a join that returns multiple results, they're more like when you have relationships like this [0]:

  user.residence1 -> country
  user.residence2 -> country

  user.join(country)
You have to specify somewhere which foreign key to follow, it can't be figured out automatically. GP's suggestion doesn't work because there's no way to automatically determine which one to use.

I'm only really familiar with Django, and it handles this type of thing by making you specify the "residence1" name instead of the table name "country".

[0] To refer back to the top of this comment chain, that user is complaining they can't do something like also have a "country->continent" relationship and do "user.join(continent)" and have the system figure out the two joins needed.



Putting on my dogmatic 3NF purist hat. Instead of denormalized

   user.residence1 -> country.id
   user.residence2 -> country.id

I would create a many to many bridge table. To accommodate multiple residences for a given user.

   bridge.userid-> user.id
   bridge.countryid-> country.id


Oh definitely, I just couldn't think of a better example off the top of my head. But also not really relevant: You could also have another table and the relationships be A -> B -> D and A -> C -> D, with the desired join between A and D.

Remember this whole thread is about the system figuring out the JOIN criteria automatically.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: