عند التعامل مع جدول يحتوي على عدد غير معروف من القيم في عمود معين (مثل "الطريقة" في المثال المقدم)، يتم إنشاء قد تبدو الجدولة المتقاطعة في MySQL بمثابة تحدي. يتطلب النهج التقليدي منك تحديد أسماء الأعمدة في وقت الاستعلام، وهو ما قد لا يكون ممكنًا في المواقف الديناميكية.
لمواجهة هذا التحدي، يمكن استخدام حلين برمجيين :
يتضمن هذا الأسلوب جلب القيم المميزة للعمود بأعداد غير مؤكدة. باستخدام قائمة القيم هذه، يمكنك إنشاء استعلام محوري ديناميكي وإلحاق الأعمدة الضرورية بعبارة SELECT الخاصة بك.
foreach ($pdo->query("SELECT DISTINCT `way` FROM `MyTable`") as $row) {
$way = (int) $row["way"];
$way_array[] = "MAX(IF(`way`=$way, `time`)) AS way_$way";
}
$pivotsql = "SELECT stop, " . join(", ", $way_array) . "FROM `MyTable` GROUP BY `stop`";
تتضمن هذه الطريقة البديلة الاستعلام عن صف البيانات تلو الآخر كما تم تنظيمه في قاعدة البيانات الخاصة بك. ستقوم بجمع البيانات في مصفوفة ثم محورها في أعمدة قبل عرضها.
$stoparray = array();
foreach ($pdo->query("SELECT * FROM `MyTable`") as $row) {
$stopkey = $row["stop"];
if (!array_key_exists($stopkey, $stoparray)) {
$stoparray[$stopkey] = array("stop"=>$stopkey);
}
$waykey = "way_" . $row["way"];
$stoparray[$stopkey][$waykey] = $row["time"];
}
يتطلب كلا الطريقتين ترميزًا للتكيف مع المواقف الديناميكية حيث يكون عدد الأعمدة غير معروف. يعتمد اختيار النهج على متطلبات معالجة البيانات المحددة واعتبارات الكفاءة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3