Reputation: 3491
how can i union these select statements that each table has different number of columns?
(SELECT title, description, full_description, keywords, option1, option2, option3, option4, option5, option6, option7, option8 FROM articles WHERE title LIKE ? OR description LIKE ? OR full_description LIKE ? OR keywords LIKE ? OR option1 LIKE ? OR option2 LIKE ? OR option3 LIKE ? OR option4 LIKE ? OR option5 LIKE ? OR option6 LIKE ? OR option7 LIKE ? OR option8 LIKE ?)
UNION ALL
(SELECT title, description, full_description, keywords, option1, option2, option3, option4, option5, option6, option7, option8 FROM news WHERE title LIKE ? OR description LIKE ? OR full_description LIKE ? OR keywords LIKE ? OR option1 LIKE ? OR option2 LIKE ? OR option3 LIKE ? OR option4 LIKE ? OR option5 LIKE ? OR option6 LIKE ? OR option7 LIKE ? OR option8 LIKE ?)
UNION ALL
(SELECT title, description, full_description, keywords, option1, option2, option3, option4, option5, option6, option7, option8 FROM products WHERE title LIKE ? OR description LIKE ? OR full_description LIKE ? OR keywords LIKE ? OR option1 LIKE ? OR option2 LIKE ? OR option3 LIKE ? OR option4 LIKE ? OR option5 LIKE ? OR option6 LIKE ? OR option7 LIKE ? OR option8 LIKE ?)
UNION ALL
(SELECT title, description, option1, option2, option3, option4, option5, option6, option7, option8 FROM gallery_images WHERE title LIKE ? OR description LIKE ? OR option1 LIKE ? OR option2 LIKE ? OR option3 LIKE ? OR option4 LIKE ? OR option5 LIKE ? OR option6 LIKE ? OR option7 LIKE ? OR option8 LIKE ?)
UNION ALL
(SELECT title, description, option1, option2, option3, option4, option5, option6, option7, option8 FROM pages WHERE title LIKE ? OR description LIKE ? OR option1 LIKE ? OR option2 LIKE ? OR option3 LIKE ? OR option4 LIKE ? OR option5 LIKE ? OR option6 LIKE ? OR option7 LIKE ? OR option8 LIKE ?)
i recieve this error :
The used SELECT statements have a different number of columns
Upvotes: 0
Views: 86
Reputation: 359
Simply use NULL value as placeholder for missing fields.
This should work:
(SELECT title, description, full_description, keywords, option1, option2, option3, option4, option5, option6, option7, option8 FROM articles WHERE title LIKE ? OR description LIKE ? OR full_description LIKE ? OR keywords LIKE ? OR option1 LIKE ? OR option2 LIKE ? OR option3 LIKE ? OR option4 LIKE ? OR option5 LIKE ? OR option6 LIKE ? OR option7 LIKE ? OR option8 LIKE ?)
UNION ALL
(SELECT title, description, full_description, keywords, option1, option2, option3, option4, option5, option6, option7, option8 FROM news WHERE title LIKE ? OR description LIKE ? OR full_description LIKE ? OR keywords LIKE ? OR option1 LIKE ? OR option2 LIKE ? OR option3 LIKE ? OR option4 LIKE ? OR option5 LIKE ? OR option6 LIKE ? OR option7 LIKE ? OR option8 LIKE ?)
UNION ALL
(SELECT title, description, full_description, keywords, option1, option2, option3, option4, option5, option6, option7, option8 FROM products WHERE title LIKE ? OR description LIKE ? OR full_description LIKE ? OR keywords LIKE ? OR option1 LIKE ? OR option2 LIKE ? OR option3 LIKE ? OR option4 LIKE ? OR option5 LIKE ? OR option6 LIKE ? OR option7 LIKE ? OR option8 LIKE ?)
UNION ALL
(SELECT title, description, NULL AS full_description, NULL AS keywords, option1, option2, option3, option4, option5, option6, option7, option8 FROM gallery_images WHERE title LIKE ? OR description LIKE ? OR option1 LIKE ? OR option2 LIKE ? OR option3 LIKE ? OR option4 LIKE ? OR option5 LIKE ? OR option6 LIKE ? OR option7 LIKE ? OR option8 LIKE ?)
UNION ALL
(SELECT title, description, NULL AS full_description, NULL AS keywords, option1, option2, option3, option4, option5, option6, option7, option8 FROM pages WHERE title LIKE ? OR description LIKE ? OR option1 LIKE ? OR option2 LIKE ? OR option3 LIKE ? OR option4 LIKE ? OR option5 LIKE ? OR option6 LIKE ? OR option7 LIKE ? OR option8 LIKE ?)
Upvotes: 1
Reputation: 1985
simply: you can't - you must add some blank columns (e.g. NULL as blank1
) to those subqueries which have less than maximum # of columns
Upvotes: 1