SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 01.11.2010 18:49:10

vind
Участник
Зарегистрирован: 01.11.2010
Сообщений: 2

Проверка двух условий одним запросом

есть две таблицы
1)authors - в ней два поля id_author и author (проще говоря, каждый автор пронумерован)
2)genres - поля id_genre, genre (нумерация жанров)

есть две переменных: $genre (в ней содержится название некоего жанра) и $author (в ней имя автора).

Задача состоит в том, что надо проверить есть ли уже содержимое переменных в таблицах ($genre в поле genre и $author в поле author) и если есть, то получить id соответствующего поля, а если нет то добавить новую строку с содержимым переменной в таблицу.

пока получается только делать проверку для каждой переменной по отдельности:

пример для переменной $author

$r = mysql_query("SELECT * FROM authors WHERE author = '$author'");
 if (mysql_num_rows($r) > 0) {
 $mas = mysql_fetch_array($r);
      $id = $mas['id_author'];
      }
       else {
                mysql_query("insert into authors (author) values ('{$author}')");
              }

 


Возможно ли сделать тоже самое для обоих переменных одним запросом?

Неактивен

 

#2 01.11.2010 20:17:39

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Проверка двух условий одним запросом

vind написал:

Возможно ли сделать тоже самое для обоих переменных одним запросом?

Нет.

vind написал:

..и если есть, то получить id соответствующего поля, ..

$r = mysql_query("SELECT * FROM authors WHERE author = '$author'");

А зачем вы выбираете все поля из таблицы author, если вам нужен только id_author?
Вообще писать 'select *' плохая практика, даже если нужны все поля, то завтра могут добавиться новые поля и запрос станет потреблять лишние ресурсы.

Неактивен

 

#3 01.11.2010 21:06:44

vind
Участник
Зарегистрирован: 01.11.2010
Сообщений: 2

Re: Проверка двух условий одним запросом

Спасибо за ответ. По поводу 'select *' буду иметь ввиду.
А как то вообще можно упростить мой код? А то бывает часто в силу недостаточных знаний пишу в коде много лишнего. И в данном случае более чем уверен можно сделать всё проще.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson