Это работает.
Я проанализировал отклик объекта json, используя это: - работает как шарм.
String tag_string_req = "string_req";
Map<String, String> params = new HashMap<String, String>();
params.put("user_id","CMD0005");
JSONObject jsonObj = new JSONObject(params);
String url="" //your link
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.POST,
url, jsonObj, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d("responce", response.toString());
try {
// Parsing json object response
// response will be a json object
String userbalance = response.getString("userbalance");
Log.d("userbalance",userbalance);
String walletbalance = response.getString("walletbalance");
Log.d("walletbalance",walletbalance);
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(),
"Error: " + e.getMessage(),
Toast.LENGTH_LONG).show();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getApplicationContext(),
error.getMessage(), Toast.LENGTH_SHORT).show();
}
});
AppControllerVolley.getInstance().addToRequestQueue(jsonObjReq, tag_string_req);
удачи! спокойной ночи!
Используя подзапросы, вы можете:
SELECT co.*,
(SELECT COUNT(*) FROM modules mod WHERE mod.course_id=co.id) AS moduleCount,
(SELECT COUNT(*) FROM videos vid WHERE vid.course_id=co.id) AS vidCount
FROM courses AS co
ORDER BY co.id DESC
Но будьте осторожны, поскольку это дорогостоящий запрос, когда в курсах много строк.
EDIT: Если ваши таблицы довольно большие, следующий запрос должен работать намного лучше (в пользу большей сложности для чтения и понимания).
SELECT co.*,
COALESCE(mod.moduleCount,0) AS moduleCount,
COALESCE(vid.vidCount,0) AS vidCount
FROM courses AS co
LEFT JOIN (
SELECT COUNT(*) AS moduleCount, course_id AS courseId
FROM modules
GROUP BY course_id
) AS mod
ON mod.courseId = co.id
LEFT JOIN (
SELECT COUNT(*) AS vidCount, course_id AS courseId
FROM videos
GROUP BY course_id
) AS vid
ON vid.courseId = co.id
ORDER BY co.id DESC
SELECT co.*,
(
SELECT COUNT(*)
FROM modules mod
WHERE mod.course_id = co.id
) AS modCount,
(
SELECT COUNT(*)
FROM videos vid
WHERE vid.course_id = co.id
) AS vidCount
FROM courses co
ORDER BY
co.id DESC
Стреляй. Я выполнил эту работу с некоторым кодом, отличным от mysql:
function getAllWithStats($info='*',$order='',$id=0)
{
$courses=$this->getAll($info,$order,$id);
foreach ($courses as $k=>$v)
{
$courses[$k]['modCount']=$this->getModuleCount($v['id']);
$courses[$k]['vidCount']=$this->getVideoCount($v['id']);
}
return $courses;
}
SELECT co.*, m.ModCnt as moduleCount, v.VidCnt as vidCount
FROM courses co
INNER JOIN (
select count(*) AS ModCnt, co.id AS CoID
from modules
group by co) m
ON m.CoID = co.id
INNER JOIN (
select count(*) AS VidCnt, co.id AS CoID
from videos
group by co) v
ON v.CoID = co.id
INNER JOIN videos vid
ON vid.course_id = co.id
ORDER BY co.id DESC