Simon Kimber pressed the little lettered thingies in this order...
>
> Christopher Wrote...
> > You need to be able to tie at least one field from each table to
> > one other
> > field in another table, and then you can have a query like:
> >
> > SELECT videos.*, links.*, actors.*
> > FROM videos, links, actors
> > WHERE videos.VideoID = '$VideoID' AND
> > links.VideoID = videos.VideoID
> > actors.ActorID = links.ActorID
> >
>
> Thanks Christopher,
>
> but wouldn't this return a separate row for each actor? I'm pretty sure i
> need something more than a simple join :o(
>
> Here's my original question again: "what i need to do is return a
> particular video and all it's staring actors with just one query returning
> just one row, ie. with all the actor names in one field"
>
>
Hello,
I had your thought backwards in my mind. I haven't ever seen a query
that needed a sub-select that couldn't be written using joins. It's true
that in many cases sub-selects would be much simpler, but it's usually
possible to rewrite sub-select queries using joins. You can do this
query with a simple join, but need to start with the table that will give
multiple results first and load those results into an array.
For example:
$result=mysql("DBName","SELECT actors.*, links.*, videos.*
WHERE actors.VideoID = '$VideoID' AND
links.VideoID = actors.VideoID AND
videos.VideoID = actors.VideoID
ORDER BY whatever");
$i=0;
while ($row = mysql_fetch_row($result)) {
$actorsField1[$i] = $row[0];
$actorsField1[$i] = $row[1];
...
$linksField1 = $row[10];
$linksField1 = $row[11];
...
$videosField1 = $row[20];
$videosField1 = $row[21];
...
$i++;
}
If the results of the links and videos tables are going to be the same for
each query, then there's no need to save those values in an array. If
there are going to be multiple results for any other table, you will also
want those to be saved as an array. What you are attempting could
also be done a little differently by using a LEFT JOIN, but I think that the
above statement will do what you want (If I am in fact understanding
what you want). You may also want to change the above SELECT to
have "links.ActorID = actors.ActorID" if your links table is tied to the
actors and not the videos. You can then show your results like:
echo "$videosField1<br>
$videosField2<p>
$linksField1<br>
$linksField2<p>";
for ($i = 0; $actorsField1[$i]; $i++) {
echo "$actorsField1[$i]<br>
$actorsField2[$i]<p>";
}
Or however you want it to be formatted. The end result is that you have
a single SQL query.
Have fun...
Christopher Ostmo
a.k.a. [EMAIL PROTECTED]
AppIdeas.com
Meeting cutting edge dynamic
web site needs
For a good time,
http://www.AppIdeas.com/