У меня есть две таблицы
первая таблица zakaz (несколько полей с одинаковым значением z_uid не может быть)
id z_uid z_code
1 11 lg
2 22 wg
3 33 wg
4 44 wg
вторая таблица polzovateli (несколько полей с одинаковым значением uid МОЖЕТ БЫТЬ)
id uid code
1 11 lg
2 33 lg
3 22 lg
4 44 wg
5 11 lg
6 44 wg
Так вот мне нужно вывести записи из первой таблицы у которых поле z_code=lg и у которых выполняется одновременно два условия это z_code=wg и в тоже время у всех записей из второй таблицы у которых z_uid=uid, code должна равняться lg.
Тоесть при этом запросе я должен из данной таблицы вывести только
1 11 lg
2 22 wg
3 33 wg
Надеюсь тут кто нить сможет решить эту мега трудную задачку))) Зарание спасибо!
Спустя 7 минут, 15 секунд (22.10.2010 - 20:14) Invis1ble написал(а):
major28
Цитата |
Так вот мне нужно вывести записи из первой таблицы у которых поле z_code=lg и у которых выполняется одновременно два условия это z_code=wg и в тоже время у всех записей из второй таблицы у которых z_uid=uid, code должна равняться lg. |
переформулируй, а то не очень понятно..
И укажи как связаны таблицы 1 и 2
Спустя 12 минут, 8 секунд (22.10.2010 - 20:26) major28 написал(а):
Логика выборки следующая
Выводим все записи из первой таблицы у которых z_code=lg
+
Выводим все записи из первой таблицы у которых z_code=wg(запоминаем его z_uid) и в то же время у которых из второй страницы code=lg(у которых все uid равняются z_uid которое мы запомнили из первой таблицы.)
Тоесть смотрим первую таблицу видем z_code=wg и смотрим его z_uid затем идем в таблицу номер два и там выбираем все записи у которых uid равен z_uid, и уже из этих записей мы отбираем записи у которых code=lg
Выводим все записи из первой таблицы у которых z_code=lg
+
Выводим все записи из первой таблицы у которых z_code=wg(запоминаем его z_uid) и в то же время у которых из второй страницы code=lg(у которых все uid равняются z_uid которое мы запомнили из первой таблицы.)
Тоесть смотрим первую таблицу видем z_code=wg и смотрим его z_uid затем идем в таблицу номер два и там выбираем все записи у которых uid равен z_uid, и уже из этих записей мы отбираем записи у которых code=lg
Спустя 26 минут, 39 секунд (22.10.2010 - 20:53) Invis1ble написал(а):
major28
как одним запросом это сделать - не знаю, но знаю как в 2 запроса:
это 2 условие (должно работать), а первое - думаю итак понятно:
как их совместить - не знаю.. Сделай в 2 запроса и в один массив загони накрайняк
Отредактировал пост, там неправильно было..
как одним запросом это сделать - не знаю, но знаю как в 2 запроса:
SELECT *
FROM `zakaz`
LEFT JOIN
(
SELECT `uid`
FROM `polzovateli`
WHERE `code`='lg'
) AS p ON `z_uid`=`uid`
WHERE `z_code`='wg'
это 2 условие (должно работать), а первое - думаю итак понятно:
SELECT *
FROM `zakaz`
WHERE `z_code`='lg'
как их совместить - не знаю.. Сделай в 2 запроса и в один массив загони накрайняк
Отредактировал пост, там неправильно было..
Спустя 8 минут, 28 секунд (22.10.2010 - 21:01) Invis1ble написал(а):
major28
Помоему, одним запросом там никак не обойтись..
Помоему, одним запросом там никак не обойтись..
Спустя 11 часов, 39 минут, 17 секунд (23.10.2010 - 08:41) Michael написал(а):
Вот вариант:
SELECT * FROM zakaz
WHERE (z_kode='lg')
OR (z_kode='wg' AND
z_uid NOT IN
(
SELECT uid FROM polzovateli WHERE code != 'lg'
)
)
Спустя 5 часов, 3 минуты, 2 секунды (23.10.2010 - 13:44) Invis1ble написал(а):
Michael
интересное решение, надо взять себе на вооружение..
интересное решение, надо взять себе на вооружение..
Спустя 1 день, 11 часов, 48 минут, 5 секунд (25.10.2010 - 01:32) Noal написал(а):
$q = 'SELECT * FROM '$varr' WHERE artikul = "'.addslashes($_REQUEST['byt']).'" and price = "'.addslashes($_REQUEST['cen']).'" ' or die (mysql_error()."<br><b>$sql</b>");
$pooo =mysql_query($q);
$user = mysql_fetch_array ($pooo);
Если не сложно подскажите и мне, ато жую жую уже надоело:)
пока вместо $varr конкретное значение нормально работает, а так не хочет! я уже вокруг него все что только можно ставил... не хочет ...
syntax error, unexpected T_VARIABLE последний из матюков именно на эту конструкцию.
Спустя 6 часов, 20 минут, 16 секунд (25.10.2010 - 07:52) Michael написал(а):
Чтобы переменная подставилась в строку, строка должна быть обрамлена двойными кавычками.
имя таблицы в обратных кавычках `...`
вместо addslashes - лучше mysql_real_escape_string.
Или так сделай:
"SELECT * FROM `$varr` WHERE artikul = '".mysql_real_escape_string
имя таблицы в обратных кавычках `...`
вместо addslashes - лучше mysql_real_escape_string.
Или так сделай:
'SELECT * FROM ' . $varr . ' WHERE artikul = "' ...
Спустя 2 часа, 16 минут, 6 секунд (25.10.2010 - 10:08) Noal написал(а):
Цитата (Michael @ 25.10.2010 - 04:52) |
'SELECT * FROM ' . $varr . ' WHERE artikul = "' ... |
Странно вчера именно вот так пробовал ничего не получалось и
'SELECT * FROM `' . $varr . '` WHERE artikul = "' ... так то же:)
Наверное надо было проспаться!:) Спс!