Skip to main content

Subquery returns more than 1 row



All





I have two table enter image description here





1st table is : wp_frm_item_metas 2nd table is : wp_frm_items





Now i want to meta_value based on wp_frm_items table fields value.





I fired this sql. it returns me Subquery returns more than 1 row







SELECT meta_value

FROM wp_frm_item_metas

WHERE (item_id=(

SELECT id

FROM wp_frm_items

WHERE form_id ='9' && user_id='1')

&& field_id=128)







I tried this solution







SELECT meta_value

FROM wp_frm_item_metas

WHERE (item_id=(

SELECT count(*) as c,id

FROM wp_frm_items

WHERE form_id ='9' && user_id='1')

&& field_id=128 && c > 1)

ORDER BY c DESC







It returns this error Operand should contain 1 column(s)





My code is







foreach($fp_id_c as $kid=>$id)

{

if (!$id or ($logged_in && !$user_ID)) return;

$id = (int)$id;



//echo $logged_in.'-'.(int)$user_ID;

if ($logged_in){



echo $ff_id_c[$kid];

global $wpdb;

echo "SELECT meta_value FROM wp_frm_item_metas WHERE (item_id=(SELECT count(*) as c,id FROM wp_frm_items WHERE form_id ='$kid' && user_id='". (int)$user_ID ."') && ORDER BY c DESC && field_id=$ff_id_c[$kid])";

$result_c= $wpdb->get_var("SELECT meta_value FROM wp_frm_item_metas WHERE (item_id IN (SELECT count(*) as c,id FROM wp_frm_items WHERE form_id ='$kid' && user_id='". (int)$user_ID ."') && field_id=$ff_id_c[$kid]) ORDER BY c DESC");

echo $result_c;

}

}




Comments

  1. Try

    WHERE item_id IN (<your sub query>) instead of WHERE item_id=

    ReplyDelete
  2. Try the IN clause

    SELECT meta_value FROM wp_frm_item_metas
    WHERE (item_id IN (
    SELECT id FROM
    wp_frm_items WHERE
    form_id ='9' && user_id='1'
    )
    && field_id=128
    )

    ReplyDelete

Post a Comment

Popular posts from this blog

Why is this Javascript much *slower* than its jQuery equivalent?

I have a HTML list of about 500 items and a "filter" box above it. I started by using jQuery to filter the list when I typed a letter (timing code added later): $('#filter').keyup( function() { var jqStart = (new Date).getTime(); var search = $(this).val().toLowerCase(); var $list = $('ul.ablist > li'); $list.each( function() { if ( $(this).text().toLowerCase().indexOf(search) === -1 ) $(this).hide(); else $(this).show(); } ); console.log('Time: ' + ((new Date).getTime() - jqStart)); } ); However, there was a couple of seconds delay after typing each letter (particularly the first letter). So I thought it may be slightly quicker if I used plain Javascript (I read recently that jQuery's each function is particularly slow). Here's my JS equivalent: document.getElementById('filter').addEventListener( 'keyup', function () { var jsStart = (new Date).getTime()...

Is it possible to have IF statement in an Echo statement in PHP

Thanks in advance. I did look at the other questions/answers that were similar and didn't find exactly what I was looking for. I'm trying to do this, am I on the right path? echo " <div id='tabs-".$match."'> <textarea id='".$match."' name='".$match."'>". if ($COLUMN_NAME === $match) { echo $FIELD_WITH_COLUMN_NAME; } else { } ."</textarea> <script type='text/javascript'> CKEDITOR.replace( '".$match."' ); </script> </div>"; I am getting the following error message in the browser: Parse error: syntax error, unexpected T_IF Please let me know if this is the right way to go about nesting an IF statement inside an echo. Thank you.