very tough query

2002-03-05 Thread Daren Cotter

ok, here are the 3 tables i have that are related:

mysql desc poll_questions;
++-+--+-++--
--+
| Field  | Type| Null | Key | Default| Extra
|
++-+--+-++--
--+
| poll_id| int(9) unsigned |  | PRI | NULL   |
auto_increment |
| aim_screenname | varchar(16) |  | MUL ||
|
| question   | varchar(255)|  | ||
|
| date_created   | date|  | | -00-00 |
|
++-+--+-++--
--+

mysql desc poll_answers;
+---+--+--+-+-++
| Field | Type | Null | Key | Default | Extra  |
+---+--+--+-+-++
| answer_id | int(12) unsigned |  | PRI | NULL| auto_increment |
| poll_id   | int(9) unsigned  |  | | 0   ||
| answer| varchar(255) |  | | ||
+---+--+--+-+-++

mysql desc poll_votes;
++--+--+-+-+---+
| Field  | Type | Null | Key | Default | Extra |
++--+--+-+-+---+
| aim_screenname | varchar(16)  |  | PRI | |   |
| answer_id  | int(12) unsigned |  | PRI | 0   |   |
| time_voted | timestamp(12)| YES  | | NULL|   |
| voter_ip   | varchar(15)  |  | | |   |
++--+--+-+-+---+

I'm pretty sure this is completely normalized. I have no problem joining the
3 tables to do SELECTS...but what happens when I want to delete a poll? I
can easily elete from the poll_questions and poll_answers tables, but how do
I delete the necessary rows in the poll_votes table? I tried doing a DELETE
query just like a SELECT, but it didn't work:

DELETE FROM poll_votes AS v, poll_answers AS a, poll_questions AS q
WHERE (q.poll_id = 1) AND (v.answer_id = a.answer_id) AND (a.poll_id =
q.poll_id);

Please help! Thanks!


-
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/   (the list archive)

To request this thread, e-mail [EMAIL PROTECTED]
To unsubscribe, e-mail [EMAIL PROTECTED]
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php




Re: very tough query

2002-03-05 Thread Batara Kesuma

Hi Darren,

On Tue, 5 Mar 2002 09:42:50 -0800
Daren Cotter [EMAIL PROTECTED] wrote:

 mysql desc poll_questions;
 ++-+--+-++-
 ---+
 | Field  | Type| Null | Key | Default| Extra
 |
 ++-+--+-++-
 ---+
 | poll_id| int(9) unsigned |  | PRI | NULL   |
 auto_increment |
 | aim_screenname | varchar(16) |  | MUL ||
 |
 | question   | varchar(255)|  | ||
 |
 | date_created   | date|  | | -00-00 |
 |
 ++-+--+-++-
 ---+
 
 mysql desc poll_answers;
 +---+--+--+-+-++
 | Field | Type | Null | Key | Default | Extra  |
 +---+--+--+-+-++
 | answer_id | int(12) unsigned |  | PRI | NULL| auto_increment |
 | poll_id   | int(9) unsigned  |  | | 0   ||
 | answer| varchar(255) |  | | ||
 +---+--+--+-+-++
 
 mysql desc poll_votes;
 ++--+--+-+-+---+
 | Field  | Type | Null | Key | Default | Extra |
 ++--+--+-+-+---+
 | aim_screenname | varchar(16)  |  | PRI | |   |
 | answer_id  | int(12) unsigned |  | PRI | 0   |   |
 | time_voted | timestamp(12)| YES  | | NULL|   |
 | voter_ip   | varchar(15)  |  | | |   |
 ++--+--+-+-+---+
 
 DELETE FROM poll_votes AS v, poll_answers AS a, poll_questions AS q
   WHERE (q.poll_id = 1) AND (v.answer_id = a.answer_id) AND
   (a.poll_id = q.poll_id);

I haven't tried it yet, but maybe you can try:

DELETE 
  poll_questions, poll_answers, poll_votes 
FROM 
  poll_questions, poll_answers, poll_votes 
WHERE
  (poll_questions.poll_id = poll_answers.poll_id) 
  AND (poll_answers.answer_id = poll_votes.answer_id)
  AND (poll_questions.poll_id = 1);


--bk

-
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/   (the list archive)

To request this thread, e-mail [EMAIL PROTECTED]
To unsubscribe, e-mail [EMAIL PROTECTED]
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php




RE: very tough query

2002-03-05 Thread Daren Cotter

Thanks much for the try, but I get an error:

mysql DELETE
-   poll_questions, poll_answers, poll_votes
- FROM
-   poll_questions, poll_answers, poll_votes
- WHERE
-   (poll_questions.poll_id = poll_answers.poll_id)
-   AND (poll_answers.answer_id = poll_votes.answer_id)
-   AND (poll_questions.poll_id = 1);
ERROR 1064: You have an error in your SQL syntax near 'poll_questions,
poll_answers, poll_votes
FROM
  poll_questions, poll_answers, ' at line 2



-Original Message-
From: Batara Kesuma [mailto:[EMAIL PROTECTED]]
Sent: Tuesday, March 05, 2002 8:27 AM
To: [EMAIL PROTECTED]
Cc: Daren Cotter
Subject: Re: very tough query


Hi Darren,

On Tue, 5 Mar 2002 09:42:50 -0800
Daren Cotter [EMAIL PROTECTED] wrote:

 mysql desc poll_questions;
 ++-+--+-++-
 ---+
 | Field  | Type| Null | Key | Default| Extra
 |
 ++-+--+-++-
 ---+
 | poll_id| int(9) unsigned |  | PRI | NULL   |
 auto_increment |
 | aim_screenname | varchar(16) |  | MUL ||
 |
 | question   | varchar(255)|  | ||
 |
 | date_created   | date|  | | -00-00 |
 |
 ++-+--+-++-
 ---+

 mysql desc poll_answers;
 +---+--+--+-+-++
 | Field | Type | Null | Key | Default | Extra  |
 +---+--+--+-+-++
 | answer_id | int(12) unsigned |  | PRI | NULL| auto_increment |
 | poll_id   | int(9) unsigned  |  | | 0   ||
 | answer| varchar(255) |  | | ||
 +---+--+--+-+-++

 mysql desc poll_votes;
 ++--+--+-+-+---+
 | Field  | Type | Null | Key | Default | Extra |
 ++--+--+-+-+---+
 | aim_screenname | varchar(16)  |  | PRI | |   |
 | answer_id  | int(12) unsigned |  | PRI | 0   |   |
 | time_voted | timestamp(12)| YES  | | NULL|   |
 | voter_ip   | varchar(15)  |  | | |   |
 ++--+--+-+-+---+

 DELETE FROM poll_votes AS v, poll_answers AS a, poll_questions AS q
   WHERE (q.poll_id = 1) AND (v.answer_id = a.answer_id) AND
   (a.poll_id = q.poll_id);

I haven't tried it yet, but maybe you can try:

DELETE
  poll_questions, poll_answers, poll_votes
FROM
  poll_questions, poll_answers, poll_votes
WHERE
  (poll_questions.poll_id = poll_answers.poll_id)
  AND (poll_answers.answer_id = poll_votes.answer_id)
  AND (poll_questions.poll_id = 1);


--bk


-
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/   (the list archive)

To request this thread, e-mail [EMAIL PROTECTED]
To unsubscribe, e-mail [EMAIL PROTECTED]
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php




Re: very tough query

2002-03-05 Thread Rodney Broom

From: Daren Cotter [EMAIL PROTECTED]

 ...what happens when I want to delete a poll?

Do it machanically. That is, do a query in advance to find the data that needs to be 
deleted, then go through and delete it. The logic for joining a delete can be written, 
but MySQL doesn't support it. (Hey folks, does anything else support joined deletes?)


By the way, since poll_votes has a PK of aim_screenname/answer_id, folks can give each 
answer for a given poll once. As apposed to just one answer per poll.



---
Rodney Broom
Programmer: Desert.Net




-
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/   (the list archive)

To request this thread, e-mail [EMAIL PROTECTED]
To unsubscribe, e-mail [EMAIL PROTECTED]
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php




Re: very tough query

2002-03-05 Thread Nathan

Well after reviewing the DELETE section of the manual, I see nothing to suggest that 
it supports
multiple-table deletes...

# Nathan

- Original Message -
From: Daren Cotter [EMAIL PROTECTED]
To: Nathan [EMAIL PROTECTED]; Daren Cotter [EMAIL PROTECTED]
Sent: Tuesday, March 05, 2002 12:37 PM
Subject: RE: very tough query


Here's what happens:

ERROR 1064: You have an error in your SQL syntax near ' poll_answers,
poll_votes where (poll_questions.poll_id = poll_answers.poll_id) ' at line 1



-Original Message-
From: Nathan [mailto:[EMAIL PROTECTED]]
Sent: Tuesday, March 05, 2002 9:28 AM
To: Daren Cotter
Subject: Re: very tough query


I haven't read this thread but I thought you couldn't have anything besides
a priority between
DELETE and FROM...

What happens with:

mysql DELETE FROM
-   poll_questions, poll_answers, poll_votes
- WHERE
-   (poll_questions.poll_id = poll_answers.poll_id)
-   AND (poll_answers.answer_id = poll_votes.answer_id)
-   AND (poll_questions.poll_id = 1);


# Nathan


- Original Message -
From: Daren Cotter [EMAIL PROTECTED]
To: Batara Kesuma [EMAIL PROTECTED]; [EMAIL PROTECTED]
Cc: Daren Cotter [EMAIL PROTECTED]
Sent: Tuesday, March 05, 2002 11:42 AM
Subject: RE: very tough query


Thanks much for the try, but I get an error:

mysql DELETE
-   poll_questions, poll_answers, poll_votes
- FROM
-   poll_questions, poll_answers, poll_votes
- WHERE
-   (poll_questions.poll_id = poll_answers.poll_id)
-   AND (poll_answers.answer_id = poll_votes.answer_id)
-   AND (poll_questions.poll_id = 1);
ERROR 1064: You have an error in your SQL syntax near 'poll_questions,
poll_answers, poll_votes
FROM
  poll_questions, poll_answers, ' at line 2



-Original Message-
From: Batara Kesuma [mailto:[EMAIL PROTECTED]]
Sent: Tuesday, March 05, 2002 8:27 AM
To: [EMAIL PROTECTED]
Cc: Daren Cotter
Subject: Re: very tough query


Hi Darren,

On Tue, 5 Mar 2002 09:42:50 -0800
Daren Cotter [EMAIL PROTECTED] wrote:

 mysql desc poll_questions;
 ++-+--+-++-
 ---+
 | Field  | Type| Null | Key | Default| Extra
 |
 ++-+--+-++-
 ---+
 | poll_id| int(9) unsigned |  | PRI | NULL   |
 auto_increment |
 | aim_screenname | varchar(16) |  | MUL ||
 |
 | question   | varchar(255)|  | ||
 |
 | date_created   | date|  | | -00-00 |
 |
 ++-+--+-++-
 ---+

 mysql desc poll_answers;
 +---+--+--+-+-++
 | Field | Type | Null | Key | Default | Extra  |
 +---+--+--+-+-++
 | answer_id | int(12) unsigned |  | PRI | NULL| auto_increment |
 | poll_id   | int(9) unsigned  |  | | 0   ||
 | answer| varchar(255) |  | | ||
 +---+--+--+-+-++

 mysql desc poll_votes;
 ++--+--+-+-+---+
 | Field  | Type | Null | Key | Default | Extra |
 ++--+--+-+-+---+
 | aim_screenname | varchar(16)  |  | PRI | |   |
 | answer_id  | int(12) unsigned |  | PRI | 0   |   |
 | time_voted | timestamp(12)| YES  | | NULL|   |
 | voter_ip   | varchar(15)  |  | | |   |
 ++--+--+-+-+---+

 DELETE FROM poll_votes AS v, poll_answers AS a, poll_questions AS q
 WHERE (q.poll_id = 1) AND (v.answer_id = a.answer_id) AND
 (a.poll_id = q.poll_id);

I haven't tried it yet, but maybe you can try:

DELETE
  poll_questions, poll_answers, poll_votes
FROM
  poll_questions, poll_answers, poll_votes
WHERE
  (poll_questions.poll_id = poll_answers.poll_id)
  AND (poll_answers.answer_id = poll_votes.answer_id)
  AND (poll_questions.poll_id = 1);


--bk


-
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/   (the list archive)

To request this thread, e-mail [EMAIL PROTECTED]
To unsubscribe, e-mail
[EMAIL PROTECTED]
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php






-
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/   (the list archive)

To request this thread, e-mail [EMAIL PROTECTED]
To unsubscribe, e-mail [EMAIL PROTECTED]
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php