Как получить результат двух операторов select в одной строке?

Я использую две избранные записи на странице php следующим образом:

$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' "); 

в настоящее время результат отображается с использованием отдельных циклов, как показано ниже

 while($nval= mysql_fetch_array($num1)) { $vv=$nval['SId']; $result = mysql_query("SELECT * FROM mtable WHERE SId='$vv'"); while($row = mysql_fetch_array($result)) { print "<tr height='18'>"; print "<td width=200 align=left>" . $row['Country'] . "</td>"; print "<td width=70 align=center>" . $row['MidEstimate'] . "</td>"; print "<td width=70 align=center>" . $row['LowEstimate'] . "</td>"; print "<td width=70 align=center>" . $row['HighEstimate'] . "</td>"; print "<td width=89 align=center>" . $row['StudyLocation'] . "</td>"; print "<td width=139 align=center>" . $row['ReferenceID'] . "</td>"; print "<td width=89 align=center>" . $row['Quality'] . "</td>"; print "<td width=89 align=center>" . $row['Relevance'] . "</td>"; print "<td width=61><a href='/sites/default/files/popupboxCD.php?SId=$vv' onClick='openpopup(this.href);return false;'>".$row['Info']."</a></td>"; print "</tr>"; print "<tr height='1'><td colspan='9' style='padding:0'><hr size='0.5' color='#CCCCCC' noshade='noshade' /></td></tr>"; } } 

а также

 $num2 = mysql_query("SELECT SId FROM mtable WHERE Pathogen='$pathogen2' && Topic='$topic2' && Indicator='$ind2' && IndicatorSubGroup='$subind2' "); print $num2; print "<table border='0' width='875' align='center'> <tr><td colspan=5 height=10></td></tr> <tr> <td width='200' bgcolor='#99CCF5' align='center'><b>Country</b></td> <td width='70' bgcolor='#99CCF5' align='center'><b>Mid</b></td> <td width='70' bgcolor='#99CCF5' align='center'><b>Low</b></td> <td width='70' bgcolor='#99CCF5' align='center'><b>High</b></td> <td width='89' bgcolor='#99CCF5' align='center'><b>Study Location</b></td> <td width='139' bgcolor='#99CCF5' align='center'><b>Reference</b></td> <td width='89' bgcolor='#99CCF5' align='center'><b>Quality</b></td> <td width='89' bgcolor='#99CCF5' align='center'><b>Relevance</b></td> <td width='61' ></td> </tr>"; while($nval= mysql_fetch_array($num2)) { $vv=$nval['SId']; $result = mysql_query("SELECT * FROM mtable WHERE SId='$vv'"); while($row = mysql_fetch_array($result)) { print "<tr height='18'>"; print "<td width=200 align=left>" . $row['Country'] . "</td>"; print "<td width=70 align=center>" . $row['MidEstimate'] . "</td>"; print "<td width=70 align=center>" . $row['LowEstimate'] . "</td>"; print "<td width=70 align=center>" . $row['HighEstimate'] . "</td>"; print "<td width=89 align=center>" . $row['StudyLocation'] . "</td>"; print "<td width=139 align=center>" . $row['ReferenceID'] . "</td>"; print "<td width=89 align=center>" . $row['Quality'] . "</td>"; print "<td width=89 align=center>" . $row['Relevance'] . "</td>"; print "<td width=61><a href='/sites/default/files/popupboxCD.php?SId=$vv' onClick='openpopup(this.href);return false;'>".$row['Info']."</a></td>"; print "</tr>"; print "<tr height='1'><td colspan='9' style='padding:0'><hr size='0.5' color='#CCCCCC' noshade='noshade' /></td></tr>"; } } 

Я хотел бы знать, есть ли способ объединить эти две таблицы в одну таблицу?

Результат должен выглядеть так:

Value1 (общий для обоих запросов., Eg.country), Value2 (из первого запроса), Value2 (из второго запроса)

У меня есть только одна таблица в mysql, и оба запроса показывают результаты.


Мне жаль, что мой вопрос смущает всех. Я – разработчик Lotus Notes, а не PHP. Поэтому я только начинающий пользователь в sql.

Здесь я снова повторяю свой запрос …

В настоящее время я получил две таблицы, отображающие результат из двух запросов из одной таблицы. Я хочу смешать эти результаты в одной таблице?

Это моя новая таблица должна иметь три столбца. Сначала с общим значением как из обоих таблиц, так и из второго столбца из первого столбца второй таблицы и третьего столбца из второго столбца второй таблицы. Второй и третий столбец в новой таблице – это отправка данных из одного столбца из основных данных mysql.

Надеюсь, это будет намного лучше, чем на все предложение. Я попробую это сам, и если получится, я отправлю его здесь.

с UNION

 ( SELECT * FROM mtable WHERE SId= ? ) UNION (SELECT * FROM mtable WHERE SId= ?) 

Если я правильно понял то, что вы имели в виду. Также обратите внимание в этом случае на это простое условие, которое вы можете просто сделать:

 SELECT * FROM mtable WHERE SId= ? OR SId = ? 

Извините, но я не могу следить за тем, какой результат / результат вы ищете. Я не могу интерпретировать то, что вы подразумеваете под «результатом должно быть в отдельной таблице (php page) стране, midestimate (из первого запроса), midestimate (из второго запроса) стране, midestimate (из первого запроса), midestimate (со второго запрос) страна, средний (от первого запроса), средний (от второго запроса) и так далее "

В любом случае, я думаю, вам не нужно запускать первый оператор SELECT для извлечения mtable.SId, а затем других нескольких SELECT (внутри цикла) для чтения других столбцов из mtable.

Я думаю, что следующий единственный запрос должен работать, поскольку он объединяет ваши два запроса и возвращает один набор результатов:

 SELECT * FROM mtable WHERE (Pathogen='$pathogen1' && Topic='$topic1' && Indicator='$ind1' && IndicatorSubGroup='$subind1') OR (Pathogen='$pathogen2' && Topic='$topic2' && Indicator='$ind2' && IndicatorSubGroup='$subind2'); 

Ваши два вопроса:

  1. $num1 = mysql_query("SELECT SId FROM mtable WHERE Pathogen='$pathogen1' && Topic='$topic1' && Indicator='$ind1' && IndicatorSubGroup='$subind1' ");
  2. $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 Syntax .


Сначала я подумал, что это похоже на работу для JOIN, но потом я увидел, что у вас есть только одна таблица с именем mtable , поэтому соединение или объединение вообще не нужны, вы можете написать это с помощью простого запроса select по одной таблице:

 SELECT * FROM mtable WHERE Pathogen='$pathogen2' AND Topic='$topic2' AND Indicator='$ind2' AND IndicatorSubGroup='$subind2' 

вместо. Он должен вернуть все записи, которые вас интересуют.

Ваш запрос

mtable содержит столбцы, такие как страна, midestimate и т. д. два оператора select ищут одну и ту же таблицу с разными параметрами. и результат должен быть указан в отдельной таблице (php page) стране, midestimate (из первого запроса), midestimate (из второго запроса) стране, midestimate (из первого запроса), midestimate (из второго запроса) стране, midestimate (из первого запроса) , midestimate (из второго запроса) и так далее. спасибо за ответ – Гопипули 42 мин назад

Вы попросили объединить эти два запроса в один. Это возможно. Вы пишете, у вас есть два оператора select. Я пытаюсь собрать их из вашего вопроса:

  1. $num1 = mysql_query("SELECT SId FROM mtable WHERE Pathogen='$pathogen1' && Topic='$topic1' && Indicator='$ind1' && IndicatorSubGroup='$subind1' ");
  2. `$ num2 = mysql_query (" SELECT SId FROM mtable WHERE Pathogen = '$ pathogen2' && Тема = '$ 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 не будет знать, какой из них выбрать.