|
|
|
| есть ли в MySQL вложеные запросы(или какой-нибудь их эквивалент). Желательно пример :) | |
|
|
|
|
|
|
|
для: korwin
(10.02.2005 в 21:52)
| | Полноценной поддержки до версии 4.1 не было, сейчас вроде как есть, но это нигде толком ещё не описано, да и новые версии ведут себя как-то подозрительно - их многие избегают.
В версиях младше 4.1 вложенные запросы поддерживаются только частично, пожалуй единственный пример который приходит на ум - это вложенный запрос при при вставки в таблицу данных из другой таблицы
INSERT tbl1 SELECT * FROM tbl2
|
| |
|
|
|
|
|
|
|
для: cheops
(10.02.2005 в 22:11)
| | Я имел ввиду запросы типа 'содержится ли данные вдругом наборе данных, взятых посредством другого запроса'
И еще можно ли как-нибудь в этом плане использовать массивы? | |
|
|
|
|
|
|
|
для: korwin
(11.02.2005 в 02:23)
| | Нет, к сожалению, версии до 4.1 не поддерживают эту особенность, а про выше 4.1 я сказать что-то определённое пока не могу. Обычно, при использовании MySQL в таких случаях прибегают к оператору IN:
SELECT * FROM tbl WHERE id IN (1,4,6,7,8,9,11,14,67,190)
|
Массив в круглых скобках, на месте которого в других базах данных обычно стоит вложенный запрос подставляют переменную, которую динамически формируют в цикле средствами внешнего языка (PHP) при выборке данных из другого SQL-запроса. | |
|
|
|
|
|
|
|
для: cheops
(11.02.2005 в 07:38)
| | Спасибо, про IN я не додумался посмотреть.
При такам раскладе не самый худший вариант :) | |
|
|
|
|
|
|
|
для: korwin
(11.02.2005 в 13:53)
| | есть 4 запроса:
$q1 =mysql_query("SELECT page_title FROM pages WHERE page_id = '$first'");
$q2 = mysql_query("SELECT page_title FROM pages WHERE page_id = '$second'");
$q3 = mysql_query("SELECT page_title FROM pages WHERE page_id = '$third'");
$q4 = mysql_query("SELECT page_title FROM pages WHERE page_id = '$fourth'");
|
можно (нужно?) ли их объеденить в один? и если можно, то как потом доставать результаты? | |
|
|
|
|
|
|
|
для: RV
(16.10.2005 в 07:52)
| | Конечно же можно, тем же способом, который описывал Хеопс. А доставать теми же функциями пхп, что и раньше, просто в результате выполнения запроса у вас будет не одна строка, а 4. :-)
SELECT page_title FROM pages WHERE page_id IN ('$first', '$second', '$third', '$fourth')
|
| |
|
|
|
|
|
|
|
для: napTu3aH
(16.10.2005 в 09:32)
| | а какими функциями что и раньше :) ?
$q = "SELECT page_title FROM pages WHERE page_id IN ('$first', '$second', '$third')";
$request = mysql_query($q) or die(mysql_error());
$result = mysql_fetch_array($request);
|
и в переменной $result у меня массив только из $first | |
|
|
|
|
|
|
|
для: RV
(16.10.2005 в 09:41)
| | Просто пропустить функцию "mysql_fetch_array" через цикл
for($i=0; $i<$mysql_num_rows($request); $i++)
{
$result = mysql_fetch_array($request);
echo $result;
}
|
| |
|
|
|