brings the same result as

select
    *
from
    fruit,
    fruit_animal,
    animal
where
    fruit.id = fruit_animal.id_fruit
AND
    fruit_animal.id_animal = animal.id
order by rand()

or i got something wrong

the next thing is that the tables are hughe, like 3 millionen rows (growing)

thanks btw :O

<[EMAIL PROTECTED]> schrieb im Newsbeitrag
news:[EMAIL PROTECTED]
> OK, This is a similar solution to a problem posted last month (he was
> trying to match debits to credits). Here's how it works:
>
> Create a temporary table to match your fruits_animals table except you
> want to put UNIQUE INDEXES on both columns individually. Then you run an
> INSERT IGNORE to copy the rows from fruits_animals into your temp table.
> What you will have when the INSERT IGNORE completes is a list that
> contains all of your animals listed only once and all of the fruits listed
> only once but only if that animal/fruit combination already existed.
>
> CREATE TEMPORARY TABLE tmpDedupe(
> animal_id int not null,
> fruit_id int not null,
> UNIQUE INDEX (animal_id),
> UNIQUE INDEX (fruit_id)
> )
>
> INSERT IGNORE tmpDedupe (animal_id, fruit_id)
> SELECT (id_fruits, id_animals)
> FROM fruits_animals
>
> SELECT *
> FROM tmpDedupe
> ORDER BY RAND()
> LIMIT 100
>
> DROP TABLE tmpDedupe
>
> Make sense?
>
> Yours,
> Shawn Green
> Database Administrator
> Unimin Corporation - Spruce Pine
>
>
> "Gerske, Sebastian" <[EMAIL PROTECTED]> wrote on 07/20/2004 09:22:30 AM:
>
> > well neither a,b or c :P
> >
> > i have lets say 1000 different fruits
> > and 1000 different animals
> > with many to man relations
> > now i want to extract 100 differnt fruits held by 100 different animals
> > without dupes of fruit or animal
> >
> >
> > <[EMAIL PROTECTED]> schrieb im Newsbeitrag
> >
>
news:[EMAIL PROTECTED]
> > > Sebastian,
> > >
> > > I don't think we completely understand your question....or someone
> would
> > > have responded long before now.  Let me see if I can rephrase the
> > > situation and maybe we can get a response.
> > >
> > > You have two tables that contain objects (your example: fruits and
> > > animals) and a table that relates them (example: fruits_animals) in a
> > > many-to-many relationship.
> > >
> > > Is your situation:
> > > A) You want to return 100 un-duplicated random combinations of the
> > > objects, regardless of if they have an entry in the relationship
> table?
> > > - OR -
> > > B) You want a list of 100 un-duplicated random rows from the
> relationship
> > > table?
> > > - OR -
> > > C) Each time you run your query containing "ORDER BY RAND()" , you get
> the
> > > exact same set of records back?
> > >
> > > Yours,
> > > Shawn Green
> > > Database Administrator
> > > Unimin Corporation - Spruce Pine
> > >
> > >
> > > "Gerske, Sebastian" <[EMAIL PROTECTED]> wrote on 07/20/2004 06:18:11
> AM:
> > >
> > > > help me please :/
> > > >
> > > >
> > > > ""Gerske, Sebastian"" <[EMAIL PROTECTED]> schrieb im Newsbeitrag
> > > > news:[EMAIL PROTECTED]
> > > > > Hello list,
> > > > >
> > > > > i still need a solution for my 3 table join rand problem, im using
> > > version
> > > > > 4.1 now so subqueries are possible:
> > > > >
> > > > > explanation:
> > > > >
> > > > > i have 3 tables lets say:
> > > > >
> > > > > fruits:
> > > > >
> > > > > id,   name
> > > > > 1    banana
> > > > > 2    apple
> > > > > 3    strawberry
> > > > >
> > > > > fruits_animals
> > > > >
> > > > > id,   id_fruits,   id_animals
> > > > > 1    1               2
> > > > > 2    1               3
> > > > > 3    3               1
> > > > > 4    2               4
> > > > >
> > > > > animals
> > > > >
> > > > > id,   name
> > > > > 1    cat
> > > > > 2   dog
> > > > > 3   mouse
> > > > > 4   elephant
> > > > >
> > > > >
> > > > > My problem is that if i join the tables and order them by rand i
> > > always
> > > > get
> > > > > one result something like:
> > > > > strawberry, cat (fruit id = 3, animal id = 1 )
> > > > > or
> > > > > banana, dog (fruit id = 1, animal id = 2)
> > > > > but never
> > > > > banana, mouse( fruit id = 1, animal id = 3 )
> > > > >
> > > > > and need to select 100 different relations without redundancies
> hows
> > > that
> > > > > possible ?
> > > > >
> > > > > regards sebastian gerske
> > > > >
> > > > >
> > > >
> > > >
> > > >
> > > > -- 
> > > > MySQL General Mailing List
> > > > For list archives: http://lists.mysql.com/mysql
> > > > To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]
> > > >
> > >
> >
> >
> >
> > -- 
> > MySQL General Mailing List
> > For list archives: http://lists.mysql.com/mysql
> > To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]
> >
>



-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to