请教:SQL同一数据库中,两个查询结果数据类型不同时的union all 合并问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请教:SQL同一数据库中,两个查询结果数据类型不同时的union all 合并问题相关的知识,希望对你有一定的参考价值。

请教:查询结果一:select 表1.字段1, 表1.字段2, 表1.字段3,from 表1 where。。。
查询结果二:select 表2.字段1, 表2.字段2, 表2.字段3,from 表2 where。。。
查询结果一中的类型全为varchar型,查询结果二中的类型:表2.字段1,其余为Numeric,
用union all怎样合并查询?

参考技术A select CAST(表2.字段1 AS VARCHAR(n), 表2.字段2, 表2.字段3,from 表2 where。。。

CAST(表2.字段1 AS VARCHAR(n) n的大小和表1.字段1的长度一致。追问

不好意思,写少了个字:
请教:查询结果一:select 表1.字段1, 表1.字段2, 表1.字段3,from 表1 where。。。
查询结果二:select 表2.字段1, 表2.字段2, 表2.字段3,from 表2 where。。。
查询结果一中的类型全为varchar型,查询结果二中的类型:表2.字段1为varchar型,其余表2.字段2/字段3为Numeric,
用union all怎样合并查询?

本回答被提问者和网友采纳
参考技术B union all不支持不同类型合并,尝试类型转化为相同的吧 参考技术C 通过cast(表2.字段2 as varchar)转换表2.字段2为varchar格式

如何从两个不同的 Laravel 查询构建器中获取我的两个结果集以同时显示在同一页面上?

【中文标题】如何从两个不同的 Laravel 查询构建器中获取我的两个结果集以同时显示在同一页面上?【英文标题】:How can I get both of my result sets from two different Laravel Query Builders to display on the same page at the same time? 【发布时间】:2019-12-17 21:06:17 【问题描述】:

我正在 Laravel 中构建一个测验应用程序。我有两个要从MySQL 数据库中检索的数据表。这些表称为questionsanswers。对于这些表中的每一个,我还有两个查询生成器。 questions 查询构建器和 answers 查询构建器。

我在答案查询构建器之前创建了问题查询构建器,并在 Blade 的帮助下成功地检索和显示了我的数据。这些问题在我的造型中看起来很好。不久之后,我创建了我的答案查询构建器来从数据库中检索我的答案表。这很有效,因为我的答案明显出现了,除了包括我的问题和背景样式在内的所有其他内容都消失了。剩下的是一个带有答案和默认白色背景的页面。当我将web.php 中的路由资源方法指向我的localhost:8000/questions 页面时,就会发生这种情况。这是我想要展示一切的地方。

当然,这两种查询构建器方法都在它们自己的控制器文件中。 QuestionsController.phpAnswersController.php 。我尝试仅使用一个控制器文件和一个查询生成器来使用->join 从我的数据库中检索问题和答案。我发现这很令人困惑,尤其是与我的分页方法结合使用时。我还了解到,当您有多个数据集时,划分控制器文件是更好的做法。我的猜测是我的 Blade 代码有问题,因为它的样式被弄乱了。

QuestionsController.php

public function index() 
    
        $questions = DB::table('questions')->simplePaginate(1);                            
        return view('questions.questions', ['questions' => $questions]); 
    

AnswersController.php

public function index() 
    
        $answers = DB::table('answers')->simplePaginate(1);                            
        return view('answers.answers', ['answers' => $answers]); 
    

questions.blade.php

@extends('home')
@if(count($questions))
    @foreach($questions as $question)
        <div class="row justify-content-center" style="margin-top: 200px; margin-left: 550px; position: absolute; z-index: 99;">
            <p>$question->question</p> 
        </div>
    @endforeach
@else 
    <p>How embarrassing. We couldn't even provide you a question. Worst quiz ever.</p> 
@endif 
// this is where my form goes
 $questions->links() 

answers.blade.php

@if(count($answers))
    @foreach($answers as $answer)
        <div class="row justify-content-center" style="margin-top: 200px; margin-left: 550px; position: absolute; z-index: 99;">
            <p>$answer->answer</p> 
        </div>
    @endforeach
@else 
    <p>How embarrassing. We couldn't even provide you any answers. Worst quiz ever.</p> 
@endif 

web.php

Route::resource('questions', 'QuestionsController');  
Route::resource('questions', 'AnswersController');

目标是让我的问题和答案都显示在同一页面上。造型完好无损。

附:我知道我要返回两个不同的视图,一个在QuestionsController.php,另一个在AnswersController.php。我知道这可能是问题的路径。我只是不知道其他选择。

【问题讨论】:

【参考方案1】:

在您的 web.php 中,您的答案控制器资源是否需要:

 Route::resource('answers', 'AnswersController');

而不是:

Route::resource('questions', 'AnswersController');

【讨论】:

不,因为我试图在问题页面上同时获得问题和答案。因此,两条路线都应该指向“问题”。如果我使用“答案”作为第一个参数,我将有两个不同的页面用于问题和答案,这不是我想要的。 在您的答案表中,您是否有与答案相关的问题的 question_id 或类似内容?

以上是关于请教:SQL同一数据库中,两个查询结果数据类型不同时的union all 合并问题的主要内容,如果未能解决你的问题,请参考以下文章

sql语句查询,根据一个表中一个列,该列在两个不同条件同时满足的查询结果

sql从同一表里查询多条不同条件的数据

请教数据库高手,在access2003里,用sql语句查询实现两表关联查询用count更新其中一表?

在union的时候怎么强制指定数据类型

Mybatis union查询异常

添加两个变量,其中包含来自同一数据库的两个不同表的值