IF внутри WHERE как правильно?

кекс

Новичок
IF внутри WHERE как правильно?

Здрасте. поиск по WHERE сказал что результатов ненайдено...
ищу другими словами, но пока не нашел ни чего..
отсюда вопрос:
PHP:
SELECT *
FROM users,userfoto,anketa
WHERE users.uid='$zapros' 
and userfoto.uid='$zapros' 
and anketa.userid='$zapros' 
and status='1'
все работает замечательно.. но есть users которые не имеют поля в userfoto и anketa или имеют в userfoto но не имеют в anketa или наоборот.. но всегда есть в users

можно ли как-то сделать запрос что-то типа такого вида???
PHP:
WHERE users.uid='$zapros' 
IF (userfoto.uid='$zapros') {and userfoto.uid='$zapros'}  
IF (anketa.uid='$zapros') {and anketa.userid='$zapros'} 

and status='1'
 

Фанат

oncle terrible
Команда форума
опиши своими словами, каких именно юзеров ищет первый запрос
 

Андрейка

Senior pomidor developer
можно.. главное про IF забыть, про пиво и футбол забыть, почитать про join
 

кекс

Новичок
$zapros это UID юзера в таблицах user, userfoto, и anketa
в первом случае, когда во всех таблицах есть UID он выводит все данные.. но иногда UID отсутствует в таблице userfoto или anketa
как дать понять об этом WHERE и не добавлять and userfoto.uid='$zapros' или соответственно and anketa.userid='$zapros'?

вроде понятно спросил..?

-~{}~ 08.11.06 17:27:

Андрейка
про пиво и футбол забыть - это кощунство..
хотя пиво я решил больше не пиить.. тока вотку.. на голос пиво коряво как-то влияет.. хотя меркури пил гинес прямо во время концерта...
непонятки какие-то.. мож у меня ломка голоса началась...
 

Андрейка

Senior pomidor developer
кажецца мне дето на другом форуме некто пишет

Здрасьте. поиск по Водка ничего не дал....
Вторую неделю пью спирт, разведенный с жидкостью для мытья окон ... все замечательно, но мне хреново.... подскажите как правильно их смешивать...... пойду чтоли попрограммирую
 

Фанат

oncle terrible
Команда форума
кекс
тебе нужы юзеры, у которых есть и юзер, и фото, и анкета?
или, может быть, юзеры, у которых есть или юзер, или фото или анкета - что-то из перечисленного?
 

кекс

Новичок
Фанат
мне нужны юзеры, у которых есть и все и только фото или и только анкета.. любые варианты.

у меня в вопросе выводит когда есть все.


PHP:
SELECT *
FROM users,userfoto,anketa
WHERE users.uid='$zapros' and userfoto.uid='$zapros' and anketa.userid='$zapros' and status='1'
 
# // работает выбирает если есть поля во всех таблицах
#  
# //но иногда в аблице userfoto нет поля UID так как юзер не добавлял фото..
# //и бывает что не заполнял анкету.. там то же нет UID а бывает что заполнил 
//анкету но не добавил фото..
# //как сказать MySQL про то что бывает или так или по другому
# //UID есть всегда в users
 

кекс

Новичок
Фанат


возможно не спорю.. я только начинаю учить все что попадется..
но это не учится за один день, потому и спрашиваю у вас как сделать из того что есть...
может быть у меня изначально неправильно сделана выборка или таблицы не так созданы или условие неправильно, но это уже не переделаешь, потому что у некоторых пользователей по несколько фоток у некоторых нет совсем.. да и анкеты у кого есть у кого нет.. а заставлять всех заполнять это навязывание своих правил.. чего в моем понимании делать не хорошо..

поэтому прошу помогите решить эту задачу..

-~{}~ 08.11.06 18:45:

PHP:
$resfoto=mysql_query("SELECT uid FROM userfoto WHERE uid='$zapros'") or die(mysql_error()); 
if(mysql_num_rows($resfoto)) {
$dfoto=("and userfoto.uid='$zapros' and status='1'");
}
$resank=mysql_query("SELECT userid FROM anketa WHERE userid='$zapros'") or die(mysql_error()); 
if(mysql_num_rows($resank)) {
$dank=("and anketa.userid='$zapros'");
}
$res=mysql_query("
SELECT *
FROM users,userfoto,anketa
WHERE users.uid='$zapros' $dfoto $dank
") or die(mysql_error());
собственно исходя из моих знаний на данный момент решение найдено так.. не знаю на сколько оно правильно.. но для меня лучше правильно так чем учить талмуды .. не зная в какую сторону смотря..
join мне ничего вразумительного не дал.. может со временем пойму что там к чему..
а спецы могли бы и подсказать как сделать такое нормальным способом.. а не посылать учить за полчаса то что приходит с годами..
засим откланиваюсь..

-~{}~ 08.11.06 18:47:

да, если у кого возникнет желание привести это в нормальный вид ( в случае если такое не правильно), то я буду не против посмотреть как это выглядит.. хотя некоторые говорят что иногда 3 запроса простых лучше чем один сложный..
 

кекс

Новичок
PHP:
FROM users left join userfoto on userfoto.uid=users.uid left join anketa on anketa .userid=users.uid

//да..... и всего-то...
можно кстати было и подсказать...
 

Фанат

oncle terrible
Команда форума
а я не про джойн думал, кстати, а про замену и на или.
но не был уверен
 

кекс

Новичок
значит я не правильно задал вопрос раз вы ничего не поняли.. ладно.. в след раз буду пытаться толковее объяснить что мне надо...
 

Андрейка

Senior pomidor developer
кекс
join мне ничего вразумительного не дал..
ага, угу

можно кстати было и подсказать...
почему-то уверен, что тебе таки подсказали (читай: написали за тебя)
 
Сверху