--- In [email protected], Elke Hinze <[EMAIL PROTECTED]> wrote:
> Why do you have your questions all in their own tables? If you want
to categorize the questions, then you should have a table for
categories, a table to hold all your questions, and a table that
relates the two.
>
I have another table not mentioned in the code snippet I gave that
refers to a table that more-or-less relates the question table to the
poll, and then separate tables for responses. It was a decision I
made after thinking long and hard about how to do this in the most
efficient way. I am going to have to do a little more studying.
> So you should have something like:
>
> Cat_Table: cat_id, cat_desc
> Questions_Table: quest_id, quest_desc
> Cat_Questions_Table: cat_id, quest_id
>
> The cat_questions table would hold the id for the particular
question (quest_id) and it's related category (cat_id).
>
> Then when you query, instead of looping through your array of
tables, you just query the table and do a join.
>
> $query = "SELECT a.cat_id as acat_id, b.quest_id as bquest_id,
b.quest_desc, c.cat_id as ccat_id, c.quest_id as cquest_id
> FROM cat_table a, questions_table b, cat_questions c
> WHERE uid = $pid
> AND a.cat_id = c.cat_id
> AND b.quest_id = c.quest_id";
Thanks! This is really helpful. Up until now, I hadn't done anything
with table joins. I went back and read the part in my book about
table joins.
One thing I am not clear on is this: When I write the php code, and I
put a joined table into an array would I refer to it as
$myvar[questions.q_cat] (that is [table.field])?
Here is what I am thinking of doing -
$var1 = mysql_query("SELECT * from poll, questions where pid =
('".$pid."')");
$var2 = mysql_fetch_array($var1);
Then I would refer to $var2[questions.q_cat].
Would that work?
By the way, thanks again. This has been very helpful.