[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите составить запрос mysql
major28
Здравствуйте! Два дня уже пытаюсь составить правильный запрос на выборку из mysql и ничего не оплучается. Может вы поможите)
У меня есть две таблицы
первая таблица 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

Спустя 26 минут, 39 секунд (22.10.2010 - 20:53) Invis1ble написал(а):
major28
как одним запросом это сделать - не знаю, но знаю как в 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 написал(а):
Чтобы переменная подставилась в строку, строка должна быть обрамлена двойными кавычками.
"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 = "' ... так то же:)
Наверное надо было проспаться!:) Спс!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.