【发布时间】:2016-01-31 02:00:14
【问题描述】:
我知道这涉及到 JOINS,但我似乎无法为我正在尝试做的事情找到可行的解决方案。
我有 2 个自定义表格:
table1 | table2
---------------------
id id
uid uid
track_id track_id
date date
art active
info
blah
blah2
首先,我想从 table2 中选择 WHERE uid=55 AND active=1 的所有内容:
$tracks = $wpdb->get_results( "SELECT * FROM table2 WHERE uid = 55 AND active = 1");
然后将 table2 中的 track_id 与 table1 中的结果进行匹配,以便我可以遍历 table1 数据。
我知道我可以这样做:
foreach( $tracks as $track ) {
$this_track = $track->track_id;
$results = $wpdb->get_results( "SELECT * FROM table1 WHERE track_id = $this_track");
// Do stuff here
}
但这就是它变得棘手的部分......
然后我想从 table2date DESC ORDER table1 中的 $results /strong>
这就是我迷路的地方......
实际上我想要(伪代码):
$results = $wpdb->get_results( "SELECT * FROM table1 WHERE track_id = $this_track" ORDER BY date DESC FROM table2);
除了最后一点,我知道我可以使用 JOINS 完成整个例程,以将这一切集中在一个查询中并提高效率,但我只是不知道如何。
所以为了清楚起见,我的整体例程应该是这样的:
从 table2 中获取 user_id=55 和 active=1 的所有 track_id 实例,然后使用这些结果将 track_id 与 table1 中具有相同 track_id 的每个结果相匹配,然后从 table2 按日期对结果进行排序
伪代码,我知道它包含废话:
$finalresults = $wpdb->get_results( "SELECT * FROM table2 where uid=55 AND active=1 THEN SELECT * FROM table1 WHERE track_id = "the track_id from the first query" THEN ORDER BY date DESC FROM table2);
【问题讨论】: