我只需要从表“__sobi2_item”中获取与用户位于同一国家/地区的项目。并将此结果用于函数 Showupdatelisting 的其余部分。这是我的 php 脚本:
<?php
function showUpdatedListing()
{
//i found the user country field value...
global $database;
$user =& JFactory::getUser();
$userId = $user->get( 'id' );
$sql = "SELECT (id) FROM #__community_fields WHERE fieldcode= 'FIELD_COUNTRY'";
$database->setQuery( $sql );
$fieldID = $database->loadResult();
$sql = "SELECT (value) FROM #__community_fields_values WHERE field_id= {$fieldID} && user_id= {$userId}";
$database->setQuery( $sql );
$usercountry = $database->loadResult();
// From all the entries i take only ones that have country field like the user has...
$query = "SELECT `data_txt`, `itemid`, `fieldid` FROM `#__sobi2_fields_data` WHERE (`fieldid` = 6) AND ('data_txt' = {$usercountry})";
$database->setQuery($query);
$ResultsArray = $database->loadObjectList();
// We need something here like a Query to load only the entries from $ResultsArray... ??
//....instead of this...
$config =& sobi2Config::getInstance();
$database = $config->getDb();
$now = $config->getTimeAndDate();
$query = "SELECT itemid FROM #__sobi2_item WHERE (published = 1 AND publish_down > '{$now}' OR publish_down = '{$config->nullDate}') ORDER BY last_update DESC LIMIT 0, 30";
$database->setQuery($query);
$sids = $database->loadResultArray();
// ......... show update function goes on...
?>
任何人都可以帮助我连接和调整这些查询吗?谢谢。
注意:对于最后一个查询 (4),我需要过滤 $ResultsArray 的项目,仅获取已发布的项目并按 last_update 对它们进行排序。我知道这是错误的,现在与之前的查询没有任何联系。这就是我在 mysql 中拥有表的方式:
_sobi2_fields_data:
itemid 字段编号 data_txt --->(是每个字段的描述列)
_sobi2_item:
itemid 已发布 --->( 如果为真则为 1,如果为假则为 0) last_update --->(该项目的最后更新日期,如果没有更改,也等于发布日期)
谢谢。
最佳答案
我也不知道你想问什么。您的最后一个查询(编号 4)对我来说没有意义,它如何与上述查询相关联?
[编辑]我已经链接了上面的第四个表,假设 itemid 是 sobi2_item 表中项目的主键,并且该值通过 itemid 链接到 sobi_fields_data 表。
SELECT
cf.id,
sfd.data_txt,
sfd.itemid,
sfd.fieldid
FROM #__community_fields cf
INNER JOIN #__community_fields_values cfv ON cf.id=cfv.field_id
INNER JOIN #__sobi2_fields_data sfd ON cfv.value=sfd.data_txt
INNER JOIN #__sobi2_item si ON sfd.itemid=si.itemid
WHERE cf.fieldcode='FIELD_COUNTRY'
AND cfv.user_id=$userId
AND sfd.fieldid=6
AND si.published=1
AND (si.publish_down > '{$now}' OR si.publish_down = '{$config->nullDate}')
ORDER BY si.last_update DESC LIMIT 0, 30
祝你好运!
关于mysql - 如何在sql中连接这两个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6536793/