我是SQL编程的新手,但查询中的一个问题是不返回值,而只有一个空查询,状态和城市不带值。
S具有以下属性:sNo,sName,状态,城市 SP具有以下属性:sNo,pNo,qty,
任何人都可以向我解释为什么不显示这些值吗?
import React, { Component } from 'react';
import Web3 from 'web3';
import './App.css';
class App extends Component {
conponentWillmount() {
this.loadBlockchainData()
}
async loadBlockchainData() {
const web3 = new Web3(Web3.givenProvider || "http://localhost:7545")
const network = await web3.eth.net.getNetworkType()
console.log("network:", network)
const accounts = await web3.eth.accounts[0]
this.state({ account: accounts[0]})
console.log("account:", accounts[0])
// Fetch Account
}
constructor(props) {
super(props)
this.state = { account: ''}
}
render() {
return (
<div className="container">
<h1>Hello world</h1>
<p>Your account : {this.state.account} </p>
</div>
);
}
}
export default App;
答案 0 :(得分:3)
首先,如果您正在学习SQL,则应该正确学习SQL。 从不在FROM
子句中使用逗号。 始终使用正确的,明确的,标准 JOIN
语法。
因此,您的查询应如下所示:
SELECT S.status, S.city
FROM S JOIN
SP
ON SP.sNo = S.sNo
WHERE S.sNo = 'Paris' ;
为什么这没有返回结果?原因如下:
S
和SP
中没有行共享同一城市。S.sNo
永远没有值'Paris'
。在这种情况下,最可能的原因是sNo
从不具有值'Paris'
。您尚未提供任何数据,所以我只能推测您打算这样做:
SELECT S.status, S.city
FROM S JOIN
SP
ON SP.sNo = S.sNo
WHERE S.city = 'Paris' ;
但这是有道理的。
一件事是可疑的。我希望称为sNo
的键列是数字。在大多数数据库中,与字符串的比较(例如'Paris'
)将返回类型转换错误。 MySQL进行隐式转换。因此,如果sNo
是一个数字,则比较将被解释为sNo = 0
-如果条件为true,则实际上可以返回行。
答案 1 :(得分:2)
在where子句s.city ='paris'
查询
SELECT S.status, S.city
FROM S, SP
WHERE S.city ='Paris' AND SP.sNo=S.sNo;