使用这个查询,我从多个表中选择行。不幸的是,如果一个表中不存在行,那么所有表中的行都不会返回。因为我在用and运算符。
所以,我想修改这个查询,如果找不到值,它将忽略一个表,但返回找到值的其余表。
以下是mysql查询:
foreach ($courseArr as $term) {
$term = trim($term);
if (!empty($term)) {
$courseSectionSql[] = "courseDataApp.course = '$term' AND courseDataApp.section = '$sectionArr[$i]'";
$i++;
}
}
$data = $db->rawQuery("SELECT courseDataApp.*, facultyDatabase.*, books.*
FROM courseDataApp
INNER JOIN facultyDatabase ON facultyDatabase.initial = courseDataApp.faculty
INNER JOIN books ON books.course = courseDataApp.course WHERE ".implode(' OR ', $courseSectionSql));
以下是回报:
{
"id":11,
// courseDataApp values
"faculty":"AKH1",
"course":"CSE241",
"section":"7",
.
.
.
.
.
.
.
// facultyDatabasevalues
"initial":"AKH1",
"name":"Ms. Kamal Habi",
"dept":"ECE",
.
.
.
.
.
.
// books values
"books": "Digital Logic Design"
},
所以问题是,当从facultydatabase或books表中找不到值时,其余的数据将不会返回。我只想让它忽略这一点,展示我们的发现。就像工会。
1条答案
按热度按时间zbdgwd5y1#
正如一些注解所指出的那样,您使用的是过时的语法,即内部联接表,这将导致您得到的结果。你需要左键加入表格。因此,即使左联接表中没有条目,也会有结果。像这样的东西应该管用
这样写的话,您将有一个与当前语法中的查询等价的查询,如果内部联接表中没有条目,它将不会返回任何内容。