[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Выборка из mysql
DarkGuy
Доброй ночи! Вернее, доброе утро!

Прошу помощи... не моргу сделать выборку в смысле where.

      

if($control_menue==' and g1 != 1'){
$control_menue=' and m1.g1 != 1 and m2.g1 != 1 and m3.g1 != 1';
}else if($control_menue==' and g2 != 1'){
$control_menue=' and m1.g2 != 1 and m2.g2 != 1 and m3.g2 != 1';
}else if($control_menue==' and g3 != 1'){
$control_menue=' and m1.g3 != 1 and m2.g3 != 1 and m3.g3 != 1';
}else if($control_menue==' and g4 != 1'){
$control_menue=' and m1.g4 != 1 and m2.g4 != 1 and m3.g4 != 1';
}else if($control_menue==' and g5 != 1'){
$control_menue=' and m1.g5 != 1 and m2.g5 != 1 and m3.g5 != 1';
}else if($control_menue==' and g6 != 1'){
$control_menue=' and m1.g6 != 1 and m2.g6 != 1 and m3.g6 != 1';
}else if($control_menue==' and g7 != 1'){
$control_menue=' and m1.g7 != 1 and m2.g7 != 1 and m3.g7 != 1';
}else if($control_menue==' and g8 != 1'){
$control_menue=' and m1.g8 != 1 and m2.g8 != 1 and m3.g8 != 1';
}else if($control_menue==' and block != 1'){
$control_menue=' and m3.block != 1 ';
}




$query = 'select m3.id, m3.g1, m3.g2, m3.g3, m3.g4, m3.g5, m3.g6, m3.g7, m3.g8, m3.block
from '
._TB_MENU_.' m1, '._TB_MENU_.' m2, '._TB_MENU_.' m3 where m1.id='.$cur_mnu.' and m1.parent_id=m2.id and m2.parent_id=m3.id and m3.parent_id=0 '.$control_menue.'';
// print_r($query);


Пишет Unknown column 'm3.block' in 'where clause'

Колонка block есть.

Собственно проблема в $control_menue

Помогите мне сделать выборку, пожалуйста.




Спустя 20 минут, 14 секунд (11.03.2012 - 05:24) Visman написал(а):
А поле block точно есть в таблице m3?

from '._TB_MENU_.' m1, '._TB_MENU_.' m2, '._TB_MENU_.' m3

должно выглядеть как
from '._TB_MENU_.' AS m1, '._TB_MENU_.' AS m2, '._TB_MENU_.' AS m3


Спустя 2 минуты, 11 секунд (11.03.2012 - 05:27) DarkGuy написал(а):
Цитата (Visman @ 11.03.2012 - 02:24)
А поле block точно есть в таблице m3?

from '._TB_MENU_.' m1, '._TB_MENU_.' m2, '._TB_MENU_.' m3

должно выглядеть как
from '._TB_MENU_.' AS m1, '._TB_MENU_.' AS m2, '._TB_MENU_.' AS m3

хммммм, таблицы m3 не существует.
_TB_MENU_ есть таблица tb_menu

Спустя 6 минут, 57 секунд (11.03.2012 - 05:33) Visman написал(а):
А чего пишут в
 print_r($query);

Спустя 4 минуты, 42 секунды (11.03.2012 - 05:38) DarkGuy написал(а):
Цитата (Visman @ 11.03.2012 - 02:33)
А чего пишут в
 print_r($query);

select m3.id, m3.g1, m3.g2, m3.g3, m3.g4, m3.g5, m3.g6, m3.g7, m3.g8, m3.block from tb_menu m1, tb_menu m2, tb_menu m3 where m1.id=141 and m1.parent_id=m2.id and m2.parent_id=m3.id and m3.parent_id=0 and m3.block != 1

Спустя 53 секунды (11.03.2012 - 05:39) Игорь_Vasinsky написал(а):
ты в условие колонку `block` указываешь из таблицы `m3` - эта колонка есть в этой таблице?

Спустя 1 минута, 22 секунды (11.03.2012 - 05:40) Игорь_Vasinsky написал(а):
даже вот что, глянь

from '._TB_MENU_.' m1, '._TB_MENU_.' m2, '._TB_MENU_.' m3


у тя же префиксы.

Спустя 3 минуты, 19 секунд (11.03.2012 - 05:44) DarkGuy написал(а):
Цитата (Игорь_Vasinsky @ 11.03.2012 - 02:39)
ты в условие колонку `block` указываешь из таблицы `m3` - эта колонка есть в этой таблице?

вопрос понял.=) .да, там есть, block

Спустя 1 минута, 14 секунд (11.03.2012 - 05:45) Игорь_Vasinsky написал(а):
вопрос решён?

Спустя 3 минуты, 7 секунд (11.03.2012 - 05:48) DarkGuy написал(а):
Цитата (Игорь_Vasinsky @ 11.03.2012 - 02:45)
вопрос решён?

На самом деле нет. В таблице TB_MENU есть колонка block, я хочу сделать where block!=1. Но не понимаю как это сделать в данном запросе.

Спустя 1 минута, 27 секунд (11.03.2012 - 05:50) Visman написал(а):
А зачем у тебя одна таблица в запросе используется в трех экземплярах?

Структуру таблицы покажи.

Спустя 2 минуты, 27 секунд (11.03.2012 - 05:52) DarkGuy написал(а):
Цитата (Visman @ 11.03.2012 - 02:50)
А зачем у тебя одна таблица в запросе используется в трех экземплярах?

Структуру таблицы покажи.

это часть системы меню... меню 3-х уровневое
вот весь код:


<?php
/*function MenuShow()
{
$query = 'select *
from '._TB_MENU_.' order by sorting,id';
$sql = mysql_query($query) or die(mysql_error());

while ($row=mysql_fetch_array($sql))
{
echo $row["name"];
}
} */


function MenuShow($cur_mnu , $control_menue)
{


if($control_menue==' and g1 != 1'){
$control_menue=' and m1.g1 != 1 and m2.g1 != 1 and m3.g1 != 1';
}else if($control_menue==' and g2 != 1'){
$control_menue=' and m1.g2 != 1 and m2.g2 != 1 and m3.g2 != 1';
}else if($control_menue==' and g3 != 1'){
$control_menue=' and m1.g3 != 1 and m2.g3 != 1 and m3.g3 != 1';
}else if($control_menue==' and g4 != 1'){
$control_menue=' and m1.g4 != 1 and m2.g4 != 1 and m3.g4 != 1';
}else if($control_menue==' and g5 != 1'){
$control_menue=' and m1.g5 != 1 and m2.g5 != 1 and m3.g5 != 1';
}else if($control_menue==' and g6 != 1'){
$control_menue=' and m1.g6 != 1 and m2.g6 != 1 and m3.g6 != 1';
}else if($control_menue==' and g7 != 1'){
$control_menue=' and m1.g7 != 1 and m2.g7 != 1 and m3.g7 != 1';
}else if($control_menue==' and g8 != 1'){
$control_menue=' and m1.g8 != 1 and m2.g8 != 1 and m3.g8 != 1';
}else if($control_menue==' and block != 1'){
$control_menue=' and m3.block != 1 ';
}




$query = 'select m3.id, m3.g1, m3.g2, m3.g3, m3.g4, m3.g5, m3.g6, m3.g7, m3.g8, m3.block
from '
._TB_MENU_.' m1, '._TB_MENU_.' m2, '._TB_MENU_.' m3 where m1.id='.$cur_mnu.' and m1.parent_id=m2.id and m2.parent_id=m3.id and m3.parent_id=0 '.$control_menue.'';
// print_r($query);




if($control_menue==' and m1.g1 != 1 and m2.g1 != 1 and m3.g1 != 1'){
$control_menue=' and g1 != 1';
}else if($control_menue==' and m1.g2 != 1 and m2.g2 != 1 and m3.g2 != 1'){
$control_menue=' and g2 != 1';
}else if($control_menue==' and m1.g3 != 1 and m2.g3 != 1 and m3.g3 != 1'){
$control_menue=' and g3 != 1';
}else if($control_menue==' and m1.g4 != 1 and m2.g4 != 1 and m3.g4 != 1'){
$control_menue=' and g4 != 1';
}else if($control_menue==' and m1.g5 != 1 and m2.g5 != 1 and m3.g5 != 1'){
$control_menue=' and g5 != 1';
}else if($control_menue==' and m1.g6 != 1 and m2.g6 != 1 and m3.g6 != 1'){
$control_menue=' and g6 != 1';
}else if($control_menue==' and m1.g7 != 1 and m2.g7 != 1 and m3.g7 != 1'){
$control_menue=' and g7 != 1';
}else if($control_menue==' and m1.g8 != 1 and m2.g8 != 1 and m3.g8 != 1'){
$control_menue=' and g8 != 1';
}else if($control_menue==' and m1.block != 1 and m2.block != 1 and m3.block != 1'){
$control_menue=' and block != 1';
}






$sql = mysql_query($query) or die(mysql_error());
// print_r($sql);
if(mysql_numrows($sql)>0)
{
$row=mysql_fetch_array($sql);
$cur_main_mnu = $row["id"];
}
else
{
$query = 'select m2.id, m2.g1, m2.g2, m2.g3, m2.g4, m2.g5, m2.g6, m2.g7, m2.g8, m2.block
from '
._TB_MENU_.' m1, '._TB_MENU_.' m2 where m1.id='.$cur_mnu.' and m1.parent_id=m2.id and m2.parent_id=0';
$sql = mysql_query($query) or die(mysql_error());
if(mysql_numrows($sql)>0)
{
$row=mysql_fetch_array($sql);
$cur_main_mnu = $row["id"];
}
else
{
$cur_main_mnu = $cur_mnu;
}
}


$query = 'select m1.*
from '
._TB_MENU_.' m1, '._TB_MENU_.' m2 where m1.parent_id='.$cur_main_mnu.' and m1.id=m2.parent_id and m2.id='.$cur_mnu;
$sql = mysql_query($query) or die(mysql_error());

$row=mysql_fetch_array($sql);
$cur_sub_mnu = $row["id"];

$query = 'select *
from '
._TB_MENU_.' where parent_id=0 '.$control_menue.' order by sorting,id';
//print_r($query);
$sql = mysql_query($query) or die(mysql_error());

echo '<div id="menu-main">';
echo '<ul class="top-menu">';
while ($row=mysql_fetch_array($sql))
{
echo "<li class='".($cur_main_mnu==$row["id"]?"active":"")."'><a href='/?mnu_id=".$row["id"]."'>".$row["name"]."</a></li>";
}
echo '</ul>';
echo '</div>';

$query = 'select *
from '
._TB_MENU_.' where parent_id='.$cur_main_mnu.' '.$control_menue.' order by sorting,id';
$sql = mysql_query($query) or die(mysql_error());

if($cur_mnu!=0 && mysql_numrows($sql)>0)
{

/*$query = 'select *
from '._TB_MENU_.' where parent_id='.$cur_main_mnu.' order by sorting,id';
$sql3 = mysql_query($query) or die(mysql_error());
$row = mysql_fetch_array($sql3);*/



echo '<div id="menu-sub-main">';

echo '<ul class="top-sub-menu">';
while ($row=mysql_fetch_array($sql))
{
echo "<li class='".($cur_mnu==$row["id"]?"active":($cur_sub_mnu==$row["id"]?"active":"!!!"))."'><a href='/?mnu_id=".$row["id"]."'>".$row["name"]."</a>";
echo "</li>";
}
echo '</ul></div>';

$query = 'select *
from '
._TB_MENU_.' m where parent_id='.$cur_mnu.' '.$control_menue.'
and exists(select * from '
._TB_MENU_.' where id=m.parent_id && parent_id!=0 '.$control_menue.')
order by sorting,id'
;
$sql2 = mysql_query($query) or die(mysql_error());

$query = 'select m1.parent_id
from '
._TB_MENU_.' m1, '._TB_MENU_.' m2 where m1.id='.$cur_mnu.' and m1.parent_id=m2.id and m2.parent_id!=0 order by m1.sorting,m1.id';
$sql = mysql_query($query) or die(mysql_error());

if(mysql_numrows($sql2)>0 || mysql_numrows($sql)>0)
{
echo"<div class=\"pause\"><ul class=\"ShowMenu\">";
if(mysql_numrows($sql2)>0)
{
while($row2=mysql_fetch_array($sql2))
{
echo "<li class='".($cur_mnu==$row2["id"]?"active":"")."'><a class='".($cur_mnu==$row2["id"]?"active":"")."' href='/?mnu_id=".$row2["id"]."'>".$row2["name"]."</a>";
}
echo '</ul></div>';
}
else
{
$row2=mysql_fetch_array($sql);
$parent=$row2["parent_id"];
$query = 'select m1.*
from '
._TB_MENU_.' m1, '._TB_MENU_.' m2 where m1.parent_id='.$parent.' and m1.parent_id=m2.id and m2.parent_id!=0 order by m1.sorting,m1.id';
$sql = mysql_query($query) or die(mysql_error());

while($row2=mysql_fetch_array($sql))
{
echo "<li class='".($cur_mnu==$row2["id"]?"active":"")."'><a class='".($cur_mnu==$row2["id"]?"active":"")."' href='/?mnu_id=".$row2["id"]."'>".$row2["name"]."</a>";
}
echo '</ul></div>';
}
}

}
}



?>


Спустя 2 минуты, 4 секунды (11.03.2012 - 05:54) Игорь_Vasinsky написал(а):
ещё раз
Здесь ты указываешь, где смотреть в формате таблица.ячейка

Цитата
m3.id, m3.g1, m3.g2, m3.g3, m3.g4, m3.g5, m3.g6, m3.g7, m3.g8, m3.block

в этом
Цитата
from '._TB_MENU_.' m1, '._TB_MENU_.' m2, '._TB_MENU_.' m3


в этом куске ты указываешь таблицы с которыми работаешь
в этом
Цитата
where m1.id='.$cur_mnu.' and m1.parent_id=m2.id and m2.parent_id=m3.id and m3.parent_id=0 '.$control_menue.'';

критерии поиска


ты на сам деле не видешь разницу первой цитаты от последующих?


структура таблицы - хоть скрин из PMA

Спустя 50 секунд (11.03.2012 - 05:55) DarkGuy написал(а):
вот структура таблицы
Поле Тип Сравнение Атрибуты Null По умолчанию Дополнительно Действие
id int(11) Нет None auto_increment
name varchar(255) utf8_general_ci Нет None
parent_id int(11) Нет 0
material_id int(11) Нет 0
sorting int(11) Нет 0
material_category_id int(6) Нет 0
forma int(11) Нет 0
forma2 int(6) Нет 0
gall1 int(11) Нет 0
lim int(11) Нет 0
page int(11) Нет 1
gall2 int(11) Нет 0
gall3 int(11) Нет 0
block int(11) Нет 0
odinc int(11) Нет 0
g1 int(11) Нет 0
g2 int(11) Нет 0
g3 int(11) Нет 0
g4 int(11) Нет 0
g5 int(11) Нет 0
g6 int(11) Нет 0
g7 int(11) Нет 0
g8 int(11) Нет 0
title varchar(255) utf8_general_ci Нет None

Спустя 1 минута, 19 секунд (11.03.2012 - 05:56) Игорь_Vasinsky написал(а):
это какая таблица?

Спустя 27 секунд (11.03.2012 - 05:57) Visman написал(а):
У тебя ошибка не там выскакивает наверное
После этого блока
               
if($control_menue==' and m1.g1 != 1 and m2.g1 != 1 and m3.g1 != 1'){
$control_menue=' and g1 != 1';
}else if($control_menue==' and m1.g2 != 1 and m2.g2 != 1 and m3.g2 != 1'){
$control_menue=' and g2 != 1';
}else if($control_menue==' and m1.g3 != 1 and m2.g3 != 1 and m3.g3 != 1'){
$control_menue=' and g3 != 1';
}else if($control_menue==' and m1.g4 != 1 and m2.g4 != 1 and m3.g4 != 1'){
$control_menue=' and g4 != 1';
}else if($control_menue==' and m1.g5 != 1 and m2.g5 != 1 and m3.g5 != 1'){
$control_menue=' and g5 != 1';
}else if($control_menue==' and m1.g6 != 1 and m2.g6 != 1 and m3.g6 != 1'){
$control_menue=' and g6 != 1';
}else if($control_menue==' and m1.g7 != 1 and m2.g7 != 1 and m3.g7 != 1'){
$control_menue=' and g7 != 1';
}else if($control_menue==' and m1.g8 != 1 and m2.g8 != 1 and m3.g8 != 1'){
$control_menue=' and g8 != 1';
}else if($control_menue==' and m1.block != 1 and m2.block != 1 and m3.block != 1'){
$control_menue=' and block != 1';
}


сделай вывод
exit($control_menue);

Спустя 2 минуты, 25 секунд (11.03.2012 - 05:59) DarkGuy написал(а):
_TB_MENU_
она здесь одна.

Спустя 2 минуты, 55 секунд (11.03.2012 - 06:02) Visman написал(а):
Покажи что тут вывело на экран.

Спустя 5 минут, 17 секунд (11.03.2012 - 06:07) DarkGuy написал(а):
Цитата (Visman @ 11.03.2012 - 03:02)
Покажи что тут вывело на экран.

если


exit($control_menue);


то выводит, пустоту


Спустя 2 минуты, 41 секунда (11.03.2012 - 06:10) Игорь_Vasinsky написал(а):
в конец запутал, разъясни эту строку

 from '._TB_MENU_.' m1, '._TB_MENU_.' m2, '._TB_MENU_.' m3 

Спустя 1 минута, 54 секунды (11.03.2012 - 06:12) Visman написал(а):
Цитата (DarkGuy @ 11.03.2012 - 11:07)
то выводит, пустоту

Это фантастика!
Почему пустоту выводит, если эта переменная у тебя в функции есть и даже чему-то равна.
Поменяй на

print_r($control_menue);

тогда.

Спустя 59 секунд (11.03.2012 - 06:13) Visman написал(а):
Цитата (Игорь_Vasinsky @ 11.03.2012 - 11:10)
в конец запутал, разъясни эту строку

Я ему уже сказал чтобы AS там писал.

Спустя 56 секунд (11.03.2012 - 06:14) Игорь_Vasinsky написал(а):
))) а он прописал?

Спустя 5 минут, 35 секунд (11.03.2012 - 06:19) DarkGuy написал(а):
as прописал, не помогло.





print_r($control_menue);




выводит
and m3.block != 1

Спустя 4 минуты, 32 секунды (11.03.2012 - 06:24) Игорь_Vasinsky написал(а):
условие формируется, но дело то в запросе,

тебе что сказали с этим куском сделать?

 from '._TB_MENU_.' m1, '._TB_MENU_.' m2, '._TB_MENU_.' m3 

Спустя 6 минут (11.03.2012 - 06:30) DarkGuy написал(а):
Цитата (Игорь_Vasinsky @ 11.03.2012 - 03:24)
условие формируется, но дело то в запросе,

тебе что сказали с этим куском сделать?

 from '._TB_MENU_.' m1, '._TB_MENU_.' m2, '._TB_MENU_.' m3 

прописать AS

Исправил, те же ошибки

Спустя 4 минуты, 7 секунд (11.03.2012 - 06:34) Игорь_Vasinsky написал(а):
уф. как исправил?
ты говоришь у тя одна таблица всего в запросе используется?

Спустя 8 секунд (11.03.2012 - 06:34) Visman написал(а):
Цитата (DarkGuy @ 11.03.2012 - 11:19)
выводит
and m3.block != 1

Вот отсюда у тебя и ошибка, так как ниже $control_menue используется в запросах, где нет псевдонимов таблиц - m3.

Спустя 4 минуты, 2 секунды (11.03.2012 - 06:38) Игорь_Vasinsky написал(а):
а я до сих пор не вкурил

_TB_MENU_ - что за константа?

Спустя 1 минута, 36 секунд (11.03.2012 - 06:40) Visman написал(а):
Цитата (Игорь_Vasinsky @ 11.03.2012 - 11:38)
_TB_MENU_

= tb_menu

Спустя 1 минута, 16 секунд (11.03.2012 - 06:41) Игорь_Vasinsky написал(а):
сдаюсь biggrin.gif

Спустя 1 минута, 47 секунд (11.03.2012 - 06:43) Visman написал(а):
Цитата (Игорь_Vasinsky @ 11.03.2012 - 11:41)
сдаюсь

Не сдавайся.
Тут
 $query = 'select m3.id, m3.g1, m3.g2, m3.g3, m3.g4, m3.g5, m3.g6, m3.g7, m3.g8, m3.block   
from '
._TB_MENU_.' m1, '._TB_MENU_.' m2, '._TB_MENU_.' m3 where m1.id='.$cur_mnu.' and m1.parent_id=m2.id and m2.parent_id=m3.id and m3.parent_id=0 '.$control_menue.'';

ошибки нет. :D

Ошибка идет в других запросах, где используется переменная $control_menue с неправильным содержанием!
Цитата
выводит
and m3.block != 1

Спустя 13 минут, 18 секунд (11.03.2012 - 06:56) Игорь_Vasinsky написал(а):
вернулась то ошибка, в которой сказано что нет m3.block, т.е. колонки block в таблице m3

Спустя 6 часов, 2 минуты, 47 секунд (11.03.2012 - 12:59) DarkGuy написал(а):
я содержание tb_MENU выкладывал block там есть
Поле Тип Сравнение Атрибуты Null По умолчанию Дополнительно Действие
id int(11) Нет None auto_increment
name varchar(255) utf8_general_ci Нет None
parent_id int(11) Нет 0
material_id int(11) Нет 0
sorting int(11) Нет 0
material_category_id int(6) Нет 0
forma int(11) Нет 0
forma2 int(6) Нет 0
gall1 int(11) Нет 0
lim int(11) Нет 0
page int(11) Нет 1
gall2 int(11) Нет 0
gall3 int(11) Нет 0
block int(11) Нет 0
odinc int(11) Нет 0
g1 int(11) Нет 0
g2 int(11) Нет 0
g3 int(11) Нет 0
g4 int(11) Нет 0
g5 int(11) Нет 0
g6 int(11) Нет 0
g7 int(11) Нет 0
g8 int(11) Нет 0
title varchar(255) utf8_general_ci Нет None

Спустя 24 минуты, 50 секунд (11.03.2012 - 13:24) Visman написал(а):
DarkGuy, сделай вывод текста запросов перед их выполнением там где используется переменная $control_menue в запросе.
Увидишь в каком запросе используется в условии псевдоним m3 в то время как во FROM его нет.

Спустя 1 день, 8 часов, 25 минут, 12 секунд (12.03.2012 - 21:49) DarkGuy написал(а):
Цитата (Visman @ 11.03.2012 - 10:24)
DarkGuy, сделай вывод текста запросов перед их выполнением там где используется переменная $control_menue в запросе.
Увидишь в каком запросе используется в условии псевдоним m3 в то время как во FROM его нет.

Слава богу, сделал.

ВСЕМ СПАСИБО!
Быстрый ответ:

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