Ваши два запроса:
$num1 = mysql_query("SELECT SId FROM mtable WHERE Pathogen='$pathogen1' && Topic='$topic1' && Indicator='$ind1' && IndicatorSubGroup='$subind1' ");
$num2 = mysql_query("SELECT SId FROM mtable WHERE Pathogen='$pathogen2' && Topic='$topic2' && Indicator='$ind2' && IndicatorSubGroup='$subind2' ");
Они отличаются только в части WHERE
.Вы можете объединить их, сгруппировав их вместе с OR
:
mysql_query("
SELECT SId FROM mtable
WHERE
(
Pathogen='$pathogen1' && Topic='$topic1'
&& Indicator='$ind1' && IndicatorSubGroup='$subind1'
)
OR
(
Pathogen='$pathogen2' && Topic='$topic2'
&& Indicator='$ind2' && IndicatorSubGroup='$subind2'
)
");
Часть WHERE
- это выражение, которое также задокументировано в руководстве по Mysql: Синтаксис выражения .Есть несколько способов выразить то, что вы ищете, приведенный выше пример - только один.
Если вам нужна более общая информация об операторе SELECT
, он задокументирован здесь: Синтаксис SELECT.
Сначала я подумал, что это звучит как работа для JOIN, но потом я увидел, что у вас есть только одна таблица с именем mtable
, поэтому объединение или объединение вообще не нужно,Вы можете написать это с помощью простого запроса на выборку по одной таблице:
SELECT * FROM mtable WHERE Pathogen='$pathogen2' AND Topic='$topic2' AND Indicator='$ind2' AND IndicatorSubGroup='$subind2'
.Он должен вернуть все интересующие вас записи.
Ваш запрос
mtable содержит столбцы, такие как country, midestimate и т. Д. Два оператора select выбирают одну и ту же таблицу с разными параметрами,и результат должен быть в одной таблице (страница php): страна, средняя оценка (из 1-го запроса), средняя страна (из 2-го запроса) страна, средняя оценка (из 1-го запроса), средняя страна (из 2-го запроса) страна, средняя оценка (из 1-го запроса), средняя оценка (из 2-го запроса) и так далее.Спасибо за ответ - Гопипули 42 минуты назад
Вы попросили объединить эти два запроса в один.Это возможноВы пишете, у вас есть два выбранных заявления.Я пытаюсь собрать их из вашего вопроса:
$num1 = mysql_query("SELECT SId FROM mtable WHERE Pathogen='$pathogen1' && Topic='$topic1' && Indicator='$ind1' && IndicatorSubGroup='$subind1' ");
- `$ num2 = mysql_query (" ВЫБЕРИТЕ САЙТ ИЗ mtable WHERE Pathogen = '$ pathogen2' && Topic = '$topic2 '&& Indicator =' $ ind2 '&& IndicatorSubGroup =' $ subind2 '");
В этих двух запросах есть некоторая часть`
В случае необходимостиданные из двух или более таблиц:
Как написано, сначала звучит как JOIN
для меня.С помощью объединений вы можете комбинировать данные из нескольких таблиц в результате на основе ссылок между ними.Ссылки должны быть сформулированы в запросе.
Более общее объяснение приведено в Википедии , руководство Mysql имеет синтаксис .
SELECT * FROM t1 LEFT JOIN t2 ON t2.a=t1.a
Это выбирает все поля из таблицы t1
и таблицы t2
для каждого продукта, в котором t2.a
равно t1.a
.
Вы можете добавить предложение where в конце, если оно и, естественно, выможно заменить *
только теми именами столбцов, которые вы хотите вернуть.Поскольку теперь у вас есть две таблицы, вам нужно добавить префикс столбцов к его префиксу таблицы, если у вас есть повторяющиеся имена столбцов с таблицами, в противном случае Mysql не будет знать, какую из них выбрать.