سؤال

لدي قاعدة بيانات مع عمود varchar url. وبعد أود جلب الصفوف بحيث تلك التي لديها أي url القيمة لها الأولوية على صفوف أخرى، ولكن يتم طلبها من قبل date الصف (تنازلي)، لذلك ORDER BY 'url' DESC, 'date' DESC لن تعمل لأنها ستطلبها أبجديا أولا. في الأساس، سيبدو شيئا مثل هذا:

الطاولة:

ID   |    Url    | Date
1    | http://...| 1001
2    |           | 1002
3    |           | 1003
4    | http://...| 1005
5    | http://...| 1004

مرتبة:

ID   |    Url    | Date
4    | http://...| 1005
5    | http://...| 1004
1    | http://...| 1001
3    |           | 1003
2    |           | 1002

ماذا ستكون الطريقة المناسبة Zend Framework (أو على الأقل استعلام SQL) للقيام بذلك؟

هل كانت مفيدة؟

المحلول

مع SQL، يمكنك ذلك شيء مثل ...

يحصل نوعا من القبيح إذا سمحت بقيم فارغة في حقل URL أيضا.

SELECT * , IF(LENGTH(url) = 0 OR url IS NULL, 1, 0) AS nourl 
FROM url ORDER BY nourl ASC

هذا يتحقق أساسا لمعرفة ما إذا كان طول عنوان URL أكبر من الصفر أو لاغيا. إذا كانوا كذلك، فهي في الجزء السفلي من هذا النوع.

نصائح أخرى

يمكنك استخدام order by field('field_name', value) desc في عبارة SELECT.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top