Перейти к содержимому


Помогите с mysql запросом


Сообщений в теме: 6

#1 Oleg_

    Активный участник

  • Пользователи
  • PipPipPip
  • 118 сообщений

Отправлено 07 Январь 2013 - 00:46

Помогите с запросом:
$sqlQuery = "SELECT `rash`.`id`,`f1646`,`f1647`,`f1721`,`f1731`,`f1951`
					 FROM cb_data121  rash
					 LEFT JOIN cb_data90  pozrash
					 ON  `rash`.`id` = `pozrash`.`f1951`  WHERE  `rash`.`f1646`='$ID' AND `rash`.`status`<>'2' AND  `pozrash`.`status`<>'2'";
		$ro = sql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
	  
		while ($up = mysql_fetch_assoc($ro))
Вот что он выдает
Array
(
	[id] => 152
	[f1646] => 12
	[f1647] => 34
	[f1721] => 15
	[f1731] => 1000
	[f1951] => 152
)
Array
(
	[id] => 150
	[f1646] => 12
	[f1647] => 26
	[f1721] => 10
	[f1731] => 2000
	[f1951] => 150
)
Array
(
	[id] => 144
	[f1646] => 12
	[f1647] => 47
	[f1721] => 11
	[f1731] => 300
	[f1951] => 144
)
Однако,в cb_data121 есть еще одна запись, которая не выдается.... А согласно LEFT JOIN из левой таблицы должны выдаваться все записи, подходящие под where, не знаю куда копать.
Вот эта запись, простым запросом без JOIN выдаются все четыре :
[id] => 151
	[f1646] => 12
	[f1647] => 47
	[f1721] => 11
	[f1731] => 300
   

Сообщение отредактировал Oleg_: 07 Январь 2013 - 00:47


#2 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 07 Январь 2013 - 02:15

Просмотр сообщенияOleg_ (07 Январь 2013 - 00:46) писал:

А согласно LEFT JOIN из левой таблицы должны выдаваться все записи, подходящие под where
Левое объединение (LEFT) позволяет включить в результирующую таблицу строки "левой" таблицы, которым не нашлось соответствие в "правой" таблице. Объясните, для начала, чего Вы хотите от запроса!

#3 Oleg_

    Активный участник

  • Пользователи
  • PipPipPip
  • 118 сообщений

Отправлено 07 Январь 2013 - 02:32

1.в левой таблице есть некоторое количество записей, у которых есть поле [id]
2.в правой таблице есть записи, у которых есть поле f1951 в которое записано id левой таблицы
соответственно мне надо вытащить (упрощенно)
[id] => 144
[f1951] => 144
то-есть пара, из левой и правой таблиц [id]=[f1951] - это получается без проблем, но главная закавыка заключается в том, что не все записи левой таблицы имеют пару в правой, но их тоже надо вытащить:
[id] => 150
[f1951] => NULL
вот это никак не получается

Сообщение отредактировал Oleg_: 07 Январь 2013 - 02:33


#4 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 07 Январь 2013 - 04:05

авторизуйтесь от имени администратора, пройдите по ссылке http://myclientbase.ru/edit_sql.php, где myclientbase.ru - адрес вашей кб. Там найдите эти две ваши таблицы и сделайте бекап SQL в файл и мне на почту wondertalik@gmail.com. Так проще будет помочь.

#5 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 07 Январь 2013 - 16:32

Какое значение $ID подставляемой в запрос? А еще уберите из вашего запроса WHERE, он здесь лишний, вместо него подставьте AND

Сообщение отредактировал wondertalik: 07 Январь 2013 - 16:36


#6 Oleg_

    Активный участник

  • Пользователи
  • PipPipPip
  • 118 сообщений

Отправлено 07 Январь 2013 - 16:51

ну типа, таблица "А"- заказ на склад:
[id1] 5 яблок
[id2] 5 груш
[id3] 5 апельсинов
[id4] 5 помидоров
На складе не оказывается помидоров, а на остальные позиции создается расход, при этом записи в таблице "В" привязываются к записям в таблице "А" через [f1951]
[id...] 5 яблок [f1951][id1]
[id...] 5 груш [f1951][id2]
[id...] 5 апельсинов [f1951][id3]

через некоторое время на складе появляются помидоры..... надо их выписать...
делаем запрос
[id...] 5 яблок [f1951][id1]
[id...] 5 груш [f1951][id2]
[id...] 5 апельсинов [f1951][id3]
[id...] 5 помидоров NULL
помидоров нет....
создаем расход помидоров....
insert.....
ну и яблок добавим
update....
[id...] 10 яблок [f1951][id1]
[id...] 5 груш [f1951][id2]
[id...] 5 апельсинов [f1951][id3]
[id...] 5 помидоров [f1951][id4]
вот в чем суть

#7 Oleg_

    Активный участник

  • Пользователи
  • PipPipPip
  • 118 сообщений

Отправлено 07 Январь 2013 - 16:53

Цитата

А еще уберите из вашего запроса WHERE, он здесь лишний, вместо него подставьте AND
все варианты перепробовал :)





Количество пользователей, читающих эту тему: 5

0 пользователей, 5 гостей, 0 анонимных