Mysql. Три независимых SELECT

R
На сайте с 18.12.2009
Offline
92
525

Можно ли сделать три независимые выборки?

Например, UNION объединяет по однотипным таблицам. JOIN объединяет таблицы по указанным параметрам для выборки.

А могу ли я вернуть значения, никак не связанные друг с другом.

Например, имея 3 таблицы:

из 1 выбрать названия и даты;

из 2 категории и цены

из 3 группу

и вывести в строку:

название1 дата1 категория1 цена1 группа1

название2 дата2 категория2 цена2 группа2

название3 дата3 категория3 цена3 группа3

...

LEOnidUKG
На сайте с 25.11.2006
Offline
1730
#1

ну кто вам мешает сделать 3-и запроса и в разные переменных их?!

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
R
На сайте с 18.12.2009
Offline
92
#2

LEOnidUKG, попробую такой вариант. Извините, все проблемы от незнания приемов. Не думал что это синтаксически приемлемо в данном случае

Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#3

В цикле 3 запроса друг за другом, и там же в цикле их клейте, как надо.

Далее выводите как хотите. Что за критичность к 1 запросу?

<?php

$sql1 = "SELECT `price`, `date` FROM tbl1";

$sql2 = "SELECT `name` FROM tbl2";

$sql3 = "SELECT `foo` FROM tbl3";

$result1 = mysql_query($sql1);

$result2 = mysql_query($sql2);

$result3 = mysql_query($sql3);

while ($row1 = mysql_fetch_assoc($result1))

{

$row2 = mysql_fetch_assoc($result2);

$row3 = mysql_fetch_assoc($result3);

$strings[] = "{$row1['price']}, {$row1['date']}, {$row2['name']}, {$row3['foo']}";

}

foreach ($strings as $k=>$v)

{

echo $v, '<br>';

}

?>

ЗЫ. Вариант этот будет работать, если во всех запросах одинаковое количество возвращаемых строк.

Подпись))
R
На сайте с 18.12.2009
Offline
92
#4
Милованов Ю.С:

while ($row1 = mysql_fetch_assoc($result1))

Пробовал такую реализацию - работает, но очень долго.

Говоря "Три независимых SELECT" я лишь хотел понять, как это сделать.

В реальной задаче значение одной таблицы ищется в значении другой (LIKE), прогоняя циклом, посредством JOIN.

В моем случае это в 6-7 раз быстрее, чем в связке цикла php

НО. Всего выборки 3. Именно первая - должна никак не зависеть от следующих за ней двух, который связаны JOIN.

Используя 2 JOIN - у меня получается 2 цикла, что печально отражается на результате вычисления SUM(цена)

siv1987
На сайте с 02.04.2009
Offline
427
#5
rerighter:
Можно ли сделать три независимые выборки?
Например, UNION объединяет по однотипным таблицам. JOIN объединяет таблицы по указанным параметрам для выборки.
А могу ли я вернуть значения, никак не связанные друг с другом.

Можно. JOIN (LEFT JOIN) обеднять таблицы, а условия выборки и объединения вы можете задавать любые.

Лентяй
На сайте с 13.11.2012
Offline
19
#6
rerighter:
Пробовал такую реализацию - работает, но очень долго.
Говоря "Три независимых SELECT" я лишь хотел понять, как это сделать.
В реальной задаче значение одной таблицы ищется в значении другой (LIKE), прогоняя циклом, посредством JOIN.
В моем случае это в 6-7 раз быстрее, чем в связке цикла php

НО. Всего выборки 3. Именно первая - должна никак не зависеть от следующих за ней двух, который связаны JOIN.
Используя 2 JOIN - у меня получается 2 цикла, что печально отражается на результате вычисления SUM(цена)

Если в таблицах есть индексы и связка происходит по ключам то join работает очень быстро. Избавляйтесь от связки по like.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий