Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

स्तंभ मान के आधार पर गतिशील रूप से स्तंभों का चयन करें

आप इसे SQL पक्ष पर हल करने का प्रयास कर सकते हैं। लेकिन आपको उस पागल क्वेरी को गतिशील रूप से लिखने के लिए अभी भी PHP का उपयोग करने की आवश्यकता होगी। या इससे भी बदतर - आप SQL में प्रोग्राम कोड लिखेंगे। जबकि PHP में पोस्ट प्रोसेसिंग काफी सरल है:

// $row = DB::..

$row = (object)[ // result from DB
    'field1' => 'value1',
    'field2' => null,
    'field3' => 'value3'
];

foreach (get_object_vars($row) as $key => $val) {
    if ($val === null) {
        unset($row->{$key});
    }
}

यह प्रभावी रूप से काफी सरल कोड की तीन पंक्तियाँ हैं। var_export($row) . से परिणाम :

stdClass::__set_state(array(
   'field1' => 'value1',
   'field3' => 'value3',
))

जैसा कि आप देख सकते हैं, NULL वाली फ़ील्ड हटा दी गई है।

और भी बेहतर:अपनी क्वेरी को सरल रखें और बस test2 . चुनें के बजाय IF(test2 = "myText" , test2, FALSE) AS test2_Alias . और फिर "गतिशील रूप से" test2_Alias create बनाएं यदि आवश्यक हो:

if ($row->test2 == 'myText') {
    $row->test2_Alias = $row->test2;
}

हाँ - यह उबाऊ है। कुछ भी काल्पनिक नहीं। लेकिन जब आप कुछ बग्स को ठीक करने का प्रयास करेंगे तो आपको सरल कोड पसंद आएगा।

अपडेट करें

हमारी चैट से:

मान लें कि आपका "विशिष्ट मान" $specificValue . में संग्रहीत है ।

$row = DB::('example')->select('test1, test2, test3')->first();
if ($row->test2 != $specificValue) {
    unset($row->test2, $row->test3);
}

यही बात है। IMHO यह दो प्रश्नों को निष्पादित करने से बेहतर है जैसे:

$test2 = DB::('example')->value('test2');
$select = ($test2 == $specificValue) 
    ? 'test1, test2, test3'
    : 'test1';
$row = DB::('example')->select($select)->first();



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. समूहीकृत MySQL डेटा से नवीनतम तिथि प्राप्त करें

  2. सभी रिकॉर्ड के लिए mysql क्वेरी आज नहीं

  3. MySQL डेटाबेस का बैकअप कैसे लें

  4. MySQL php . में विशिष्ट कॉलम से अधिकतम आईडी और न्यूनतम आईडी प्राप्त करें

  5. एक MySQL तालिका में बहुत बड़ी संख्या में स्तंभों पर विशेषज्ञ राय?