![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 6.09.2017 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
mam zapytanie zwracające rekordy z bazy - działa dobrze ... (poniżej kod) pytanie brzmi - w jaki sposób zwrócić wartość ilości wypisanych rekordów - krótko mówiąc, zamiast je wypisywać - to jak je policzyć? --- $sql = $wpdb->prepare(" SELECT a.*, (max_people_per_vehicle - booked_shared_seats) available_seats, FLOOR((((('1' - private_bookings)*max_people_per_vehicle) - booked_shared_seats) / max_people_per_vehicle)) available_full_vehicles FROM ( SELECT availability.*, ( SELECT IFNULL(SUM(people_count), 0) FROM " . TRANSFERS_BOOKING_TABLE . " WHERE is_private=0 AND availability_id = availability.Id AND DATE(booking_datetime)=DATE(%s) " . ($transfers_plugin_globals->use_woocommerce_for_checkout() ? (empty($completed_statuses_str) ? '' : " AND woo_status IN (" . $completed_statuses_str . ")") : '') . " ) booked_shared_seats, ", $date); $sql .= $wpdb->prepare(" ( SELECT IFNULL(COUNT(*), 0) FROM " . TRANSFERS_BOOKING_TABLE . " WHERE is_private=1 AND availability_id = availability.Id AND DATE(booking_datetime)=DATE(%s) " . ($transfers_plugin_globals->use_woocommerce_for_checkout() ? (empty($completed_statuses_str) && $transfers_plugin_globals->use_woocommerce_for_checkout() ? '' : " AND woo_status IN (" . $completed_statuses_str . ")") : '') . " ) private_bookings,", $date); $sql .= " IFNULL(( SELECT MIN(transport_type_max_people_per_vehicle.meta_value)+0 max_people_per_vehicle FROM $wpdb->postmeta transport_type_max_people_per_vehicle WHERE transport_type_max_people_per_vehicle.post_id = availability.transport_type_id AND transport_type_max_people_per_vehicle.meta_key='_transport_type_max_people_per_vehicle' ), 0) max_people_per_vehicle FROM " . TRANSFERS_AVAILABILITY_TABLE . " availability WHERE 1=1 "; $sql .= $wpdb->prepare(" AND (availability.destination_from_id=%d OR availability.destination_from_id=0) ", $destination_from_id); $sql .= $wpdb->prepare(" AND (availability.destination_to_id=%d OR availability.destination_to_id=0) ", $destination_to_id); $sql .= $wpdb->prepare(" AND ( DATE(%s) >= DATE(availability.start_datetime) AND DATE(%s) <= DATE(availability.end_datetime)) ", $date, $date); $sql .= " AND ( "; $sql .= $wpdb->prepare(" (availability.entry_type='daily' AND availability.slot_minutes >= %d) OR ", $date_slot_minutes); $sql .= " (availability.entry_type='byminute') OR "; $sql .= $wpdb->prepare(" (availability.entry_type='weekly' AND availability.day_index=%d AND availability.slot_minutes >= %d) OR ", $date_day_of_week, $date_slot_minutes); $sql .= $wpdb->prepare(" (availability.entry_type='monthly' AND availability.day_index=%d AND availability.slot_minutes >= %d) ", $date_day_of_month, $date_slot_minutes); $sql .= $wpdb->prepare(") HAVING (availability.entry_type='byminute') OR booked_shared_seats < (('1' - private_bookings)*max_people_per_vehicle) ) a HAVING (entry_type='byminute') OR available_seats >= %d ORDER BY slot_minutes ASC ", $people); return $wpdb->get_results($sql); } |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
1) Dla wstawianego kodu uzywaj BBCODE
2) Patrz prosze gdzie piszesz. Problem nie ma zadnego zwiazku z OOP. Przenosze -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 286 Pomógł: 46 Dołączył: 10.01.2016 Ostrzeżenie: (0%) ![]() ![]() |
https://stackoverflow.com/questions/607264/...-query-returned
Użyj do tego funkcji FOUND_ROWS(). Po SELECT pobierającym dane z tabeli, daj pod spodem tę funkcję. Dla przykładu (for example): Kod SELECT * FROM table_name; FOUND_ROWS(); +--------------+ | FOUND_ROWS() | +--------------+ | 17 | +--------------+ https://dev.mysql.com/doc/refman/5.7/en/inf...tion_found-rows Ten post edytował Neutral 10.09.2017, 12:53:39 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 18:51 |