简体   繁体   中英

PHP, SQL - getting fetch where table id = user id and count other table where row is = user id

Thanks for helping, first I will show code:

$dotaz = "Select * from customers JOIN contracts where customers.user_id ='".$_SESSION['user_id']."' and contracts.customer_contract = ".$_SESSION['user_id']." order by COUNT(contracts.customer_contract) DESC limit $limit, $pocetZaznamu ";

I need to get the lists of users (customers table) ordered by count of contracts(contracts table)

I tried to solve this by searching over there, but I can't... if you help me please and explain how it works, thank you! :) $pocetZanamu is Number of records.

I need get users (name, surname etc...) from table customers, ordered by number of contracts in contracts table, where is contract_id, customer_contract (user id)..

This should do it where is the column name you are counting.

$id = $_SESSION['user_id'] ;
$dotaz = "Select COUNT(`customer_contract`) AS CNT, `customer_contract` FROM `contracts`   WHERE `user_id`=$id GROUP BY `customer_contract` ORDER BY `CNT` DESC";

Depending on what you are doing you may want to store the results in an array, then process each element in the array separately.

while ($row =  mysqli_fetch_array($results, MYSQL_NUM)){
  $contracts[$row[1]] = $row[0];
}

foreach ($contracts AS $customer_contract => $count){
  Process each user id code here
}

Not sure what you are counting. The above counts the customer_contract for a table with multiple records containing the same value in the customer_contract column.

If you just want the total number of records with the same user_id then you'd use:

$dotaz = "Select 1 FROM `contracts`   WHERE `user_id`=$id";
$results = $mysqli->query($dotaz);
$count = mysql_num_rows($results);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM