#php #mysql #sql
#php #mysql #sql
Вопрос:
Я немного запутался в таблицах отношений «многие ко многим» и в коде, который к ним прилагается.
У меня есть table1
:
id, username
И table2
:
id, votes_up, votes_down
И вспомогательная таблица ( htable
):
vu, vd, adsid
Я хочу, чтобы при голосовании за или против объявления это голосование не распространялось на все объявления.
Моя попытка выбора данных:
mysql_query("SELECT *
FROM dbo.tab2
INNER JOIN dbo.htable
WHERE tab2.votes_up = htable.vu
AND htable.votes_down = htable.vd
INNER JOIN dbo.tab1
WHERE htable.adsID = table1.ID");
И моя попытка вставки:
mysql_query("INSERT INTO dbo.htable (vu, vd, adsid)
VALUES
(SELECT FROM dbo.tab2.votes_up, dbo.tab2.votes_down , dbo.tab1.id)");
Мой вопрос: верны ли эти два запроса? Если нет, как я могу их исправить? и что такое запрос на обновление?
Комментарии:
1. Я с трудом понимаю, что вы говорите. Постарайтесь быть более четкими. Кроме того, вам следует предоставить больше примеров кода и, возможно, более понятный пример структуры таблицы. Из того, что я могу сказать прямо сейчас, вы должны просто использовать несколько отношений «один ко многим», и это должно быть хорошо.
Ответ №1:
Я не совсем понимаю ваш вопрос, но ваши SQL-запросы неверны. Вероятно, они должны быть чем-то вроде:
SELECT
*
FROM
dbo.tab2 as tab2
INNER JOIN dbo.htable as htable
ON tab2.votes_up = htable.vu
AND tab2.votes_down = htable.vd
INNER JOIN dbo.tab1 as tab1
ON htable.adsID = tab1.ID
и
INSERT INTO dbo.htable (vu, vd, adsID)
SELECT
votes_up, votes_down, ID
FROM
dbo.tab2
Комментарии:
1. я пробовал этот код, как вы сказали, но, похоже, он просто записывается в моем php-файле, он не выглядит как код, как я написал
2. Это просто операторы SQL. Вы должны передать их в функцию PHP mysql_query(), чтобы фактически выполнить их. И вам также нужно написать код для обработки результата вашего запроса SELECT, но вы должны сделать это сами, поскольку я понятия не имею, как выглядит остальная часть вашего кода.
3. я выполнил ваш код, но он не вставлялся в htable, ничего, и при голосовании forexemple votes_up> 45, и я голосую, тогда будет 46, а когда я обновлю страницу, снова будет 45, и в базе данных ничего не произойдет. какая-либо ошибка здесь?
4. Боюсь, что без более подробной информации о вашем фактическом коде я не смогу вам больше помочь.
5. на моей странице у меня есть код обновления, подобный этому: $ sth = voting::db()->prepare(‘UPDATE’.voting::config(‘database_table_prefix’).’tab2 SET name = ?, closed = ?, votes_up = ?, votes_down = ?, date =? ); //$sth-> выполнить(array($this-> name, $this-> closed, $this-> votes_up, $this-> votes_down, $this-> date, $this-> id)); как написать свой код, подобный этому коду?