MySQL - запрос, основанный на другом запросе - PullRequest
1 голос
/ 20 декабря 2009

Я пишу много запросов, похожих на приведенный ниже пример кода. Мне было интересно, был ли более эффективный код / ​​скрипт?

$query1 ="SELECT * FROM table1 WHERE date >= '$todaysdate' ";
$result1 = mysql_query($query1)
    or die ("Error in query: $query1. " . mysql_error());
if (mysql_num_rows($result1) > 0) {
    while($row1 = mysql_fetch_object($result1)) {

        echo "$row1-date";

        $query2 ="SELECT * FROM table2 WHERE table1ID >= '$row1-table1ID' ";
        $result2 = mysql_query($query2)
            or die ("Error in query: $query2. " . mysql_error());
        if (mysql_num_rows($result2) > 0) {
            while($row2 = mysql_fetch_object($result2)) {
                echo "$row->datatable2";
            }
        }
    }
}

Ответы [ 3 ]

9 голосов
/ 20 декабря 2009

Попробуйте использовать SQL JOINs , как в следующем примере:

SELECT 
    * 
FROM 
    table1 
INNER JOIN 
    table2 ON (table2.table1ID = table1.ID)
WHERE 
    table1.date >= '2009-12-20';
1 голос
/ 20 декабря 2009

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

$query = 'SELECT table1.date, table2.datatable2 FROM table1, table2 WHERE table1.date >= \''.$todaysdate.'\' AND table2.table1ID >= table1.table1ID';
$result = mysql_query($query)
    or exit('Error in query: '.$query.' '.mysql_error());

if (mysql_num_rows($result) > 0)
{
    while($row = mysql_fetch_object($result))
    {
        echo $row->date;
        echo $row->datatable2;
    }
}

В этом случае вы выбираете несколько таблиц с FROM, разделенными запятыми, но вы также можете использовать INNER / OUTER / LEFT / RIGHT JOIN (см. Ссылку в первом ответе).

0 голосов
/ 20 декабря 2009


Вы можете использовать PDO.
Ваши запросы должны выглядеть следующим образом ..

$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();

$result = $sth->fetchAll(PDO::FETCH_COLUMN);
// OR
$result = $sth->fetchAll(PDO::FETCH_OBJ);
var_dump($result);

РУКОВОДСТВО ПО PDO: http://php.net/manual/en/book.pdo.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...