[ale] MySQL help

Charles Shapiro hooterpincher at gmail.com
Fri Mar 13 15:00:11 EDT 2015


Heh. Hadda look that one up.   Could work great, depending on resources and
purpose.

-- CHS


On Fri, Mar 13, 2015 at 2:51 PM, DJ-Pfulio <DJPfulio at jdpfu.com> wrote:

> Or just use an ORM.
>
> On 03/13/2015 02:36 PM, Charles Shapiro wrote:
> > Hmm. I'm not that familiar with MySQL, but in PostgreSQL the way to
> determine
> > what you want is
> >
> > select
> >    animal.id <http://animal.id>
> > from
> >    animal
> > left join
> >    food
> > on
> >    animal.id <http://animal.id> = food.animalid
> > where
> >    food.id <http://food.id> is null
> > ;
> >
> >
> > Writing SQL queries takes some practice.  One handy tip I've found is to
> write
> > the "from..." part first, then go back and fill in what columns you wish
> to select.
> >
> > Doing anything based on the numeric value of the "id" field is a Bad
> Idea.  In
> > most relational databases, that field just increments when you add a
> record to
> > your table.  It never decrements when you delete records.  That means
> that the
> > ID value itself is useless in determining what is or is not in a table.
>  It's
> > only useful when it's in another table -- hence the name, "Relational".
> >
> >
> > Your current table setup also breaks down if you add -- say -- a goat
> which
> > wants to eat the same things as the giraffe. You're more likely to have
> several
> > animals linked to the same foods than several foods linked to the same
> animal.
> > Don't you really want a "FoodFk" in the "animal" table?  Then you could
> have
> > lots of animals which eat the same thing.  Of course, I reckon in
> reality you'd
> > need a jump table to link foods and animals:
> >
> > food_animal { integer animalid references animal(id), integer foodid
> references
> > food(id) }
> >
> > Then you could have lots of different foods and lots of different
> animals all
> > linked together.
> >
> >
> > -- CHS
> >
> >
> > On Fri, Mar 13, 2015 at 1:52 PM, David S Jackson <deepbsd.ale at gmail.com
> > <mailto:deepbsd.ale at gmail.com>> wrote:
> >
> >     Hi,
> >
> >     I'm a MySQL newbie.  I'm just starting to use Python to talk to MySQL
> >     databases, but first I need to understand the MySQL query language!
> >
> >
> >     So, I have two tables:  (zoo) animal and food.
> >
> >     animal has the columns ID, NAME, FAMILY, WEIGHT
> >
> >     food has  ID, ANIMALID, FEED
> >
> >
> >     So if I go: select id, name, family, feed from animal JOIN food ON
> animal.id
> >     <http://animal.id>=food.animalid;
> >
> >
> >     I get something like:
> >
> >     ID   NAME        FAMILY      FEED
> >     1    Seymore   Snake        mice, leaves
> >     2    Gerard      Giraffe       leaves, grass
> >     ...
> >     etc
> >
> >     So, if I have a situation where I want to see whether an animal has
> been
> >     added the animal table but may have not been added to the food
> table, how
> >     would I compose that query?
> >
> >     That is, the animal could have been added to the animal table and
> could get
> >     an id, say 10, but the food table could have 20 foods already
> entered and
> >     the animal-id would be used several times.
> >
> >     I was thinking, is there a way I can ask, "does the highest
> animal.id
> >     <http://animal.id> number equal the highest food.animalid number"?
> If not,
> >     what animal is not getting fed?
> >
> >     Dave
> >
> _______________________________________________
> Ale mailing list
> Ale at ale.org
> http://mail.ale.org/mailman/listinfo/ale
> See JOBS, ANNOUNCE and SCHOOLS lists at
> http://mail.ale.org/mailman/listinfo
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.ale.org/pipermail/ale/attachments/20150313/51722e5d/attachment.html>


More information about the Ale mailing list