मुझे लगता है कि आप अपने को समझाने के लिए दिखना चाहिए। क्योंकि डीबी के लिए कम गिनती पूछताछ - बेहतर। इस मामले में आपको संघ का उपयोग करना चाहिए:
SELECT max(logs) as logs, id, 'table1' type
FROM table1 WHERE message NOT LIKE "[ SYSTEM%"
UNION
SELECT max(logs) as logs, id, 'table2' type
FROM table2 WHERE message LIKE "[ SYSTEM%"
;
फ़ील्ड प्रकार से आप समझ सकते हैं कि आप किस तालिका से डेटा प्राप्त करते हैं।
लेकिन अगर आपके समझाने बुरा हो जाएगा, तो आप अलग-अलग क्वेरी का उपयोग करना चाहिए:
<?php
$dbh = new PDO('mysql:dbname=test;host=127.0.0.1', 'root');
$sth = $dbh->prepare('
SELECT max(logs) as logs, id
FROM table1 WHERE message NOT LIKE :like
');
$sth->bindParam(':like', $like, PDO::PARAM_STR);
$sth->execute();
$result = $sth->fetchAll(PDO::FETCH_ASSOC);
if (empty($result)) {
$sth = $dbh->prepare('
SELECT max(logs) as logs, id
FROM table2 WHERE message LIKE :like
');
$sth->bindParam(':like', $like, PDO::PARAM_STR);
$sth->execute();
$result = $sth->fetchAll(PDO::FETCH_ASSOC);
}
var_export($result);
स्रोत
2015-05-27 05:07:37
आप कोई जाँच करने के लिए इस्तेमाल किया जा सकता mysqli_num_rows (सिर्फ तालिका 1 या तालिका 2 से रिकॉर्ड करता है, तो जाँच करने के लिए)। पहली क्वेरी द्वारा पंक्तियों की वापसी। –
शायद एक 'UNION' का उपयोग करें और एक' LIMIT में 1' – Sean
साथ एक बाहरी 'SELECT' का उपयोग कर if (! $ परिणाम) {// कुछ करते} – Andrew