Всем доброй ночи. Есть 2 таблицы материалы | id | name | приход расход материалов | id | id_материала | цена расхода или прихода | приход или уход | количество материалов | вот запрос который я подготовил но он выводит только те материалы которые есть в таблице "приход расход" а хотелось бы чтобы он материал цеплял даже если в таблице "приход расход" его нет [sql]SELECT material.id, SUM(prihod.kolvo * prihod.price) FROM material, prihod WHERE material.id = prihod.idmat AND prihod.tip = '1' GROUP BY material.id ORDER BY material.id;[/sql]
Читайте про OUTER LEFT JOIN. Пример: [sql]SELECT * FROM `Material` LEFT JOIN `Prihod` ON `Prihod`.`MaterialID` = `Material`.`ID`[/sql]
я просто то JOIN уйти пытаюсь а мне всегда его и советуют с JOIN я и сам написать могу кстате в первом моем посте это лишнее вроде PHP: ORDER BY material.id
Сейчас просто код улучшаю где чувак умудрялся извлекать 5 таблиц через SELECT * имя_таблицы а потом с кучей if и for все это разбирал. Лаги в программе просто ох**ть
приведи этот запрос - любопытно, ибо сейчас как раз приходится использовать ифы ) но самомнение конечно не обосновано ничем.
Вот тебе пример с IF PHP: $sql="SELECT * FROM sklad ORDER BY naimenovanie"; $success=mysql_query($sql); if(mysql_num_rows($success)>0) { $i = 0; for($i=0;$i<=mysql_num_rows($success)-1;$i++) { $i++; $ryad=mysql_fetch_array($success); $sql = "select * from nakl where idmat='".$ryad["id"]."' and tip='rashod'"; $res1 = mysql_query($sql); $allstr = 0; while($row1=mysql_fetch_array($res1)) { $allstr -= $row1["kolvo"]*$row1["price"]; } } } Прикинул что будет если материалов не 100 щтук а 100000?
я пятый день ржу поле tip varchar(20) cp1251_general_ci [sql]$sql = "select * from nakl where idmat='".$ryad["id"]."' and tip='rashod'";[/sql] Возможные значения [sql]tip='rashod'";[/sql] и [sql]tip='prihod'";[/sql]
ctekjlo, не слушай людей, которые говорят, что Джоины — зло. Они не понимают о чём говорят. Это охуенная и хорошо оптимизированная штука в базах данных, которую нужно обязательно использовать там, где надо получить записи из двух таблиц. http://www.php.ru/forum/viewtopic.php?t=20647&start=30 Но индексы, естественно, должны стоять.
не знаю но я теперь стараюсь делать JOIN там где без него не как не обойтись инфу по ссылке почитал полезно
ctekjlo, лучше сделать один запрос с двумя Джоинами, чем три запроса без джоинов. Так и выполнится быстрее и ты облегчишь логику программы, так как уберешь ненужные действия.
это да но я имел ввиду те запросы которые могут быть как с JOIN так и без него. [sql]SELECT user.id, roles.role message.msg FROM user, roles, message WHERE user.id = roles.id_user AND user.id_msg = message.id[/sql] Ну нет ведь смысла делать тут JOIN