如何将这两个查询相互关联?

时间:2018-10-10 22:26:47

标签: sql

我有这个查询

onInputChanged

结果:

image

并且我想将此查询添加到响应

SELECT m.id
, m.userId1
, m.userId2
, m.message
, m.sentDate
, m.readDate
, u1.id id1
, u1.ad ad1
, u1.avatar avatar1
, u2.id id2
, u2.ad ad2
, u2.avatar avatar2 
FROM messages m 
inner join users u1 
       on m.userId1 = u1.id
inner join users u2 
    on m.userId2 = u2.id 
where (userId1 = 7 or userId2 = 7) 
    and (userId2 = 8 or userId1 = 8) 
order by sentDate

结果:

image

如何将这两个查询相互关联?

2 个答案:

答案 0 :(得分:0)

未经测试(我现在不在SQL连接盒中),但是一种方法可能是这样的:

from keras.models import Sequential
from keras.layers import Dense, Activation
from keras.layers import LSTM
from tqdm import tqdm
import cv2
import os
import numpy as np

imageSize = 200

#create lables for each image
def labelImage(img):
    wordLabel = img.split('.')[-3]
    #Conversion to one hot array [lat,not]
    if wordLabel == "FWAC":
        return[1,0]
    else:
        return[0,1]

#Process images and add lables
#Convert data into an array and add its lable
def makeTrainingData():
    print("Creating Training Data")
    trainingData = []
    for img in tqdm(os.listdir(trainDir)):
        label = labelImage(img)
        path = os.path.join(trainDir,img)
        img = cv2.imread(path, cv2.IMREAD_GRAYSCALE)
        img = cv2.resize(img, (imageSize,imageSize))
        trainingData.append([np.array(img),np.array(label)])

    #Save the array file to load it into other models if needed
    np.save("trainingData.npy", trainingData)
    print("Training Data Saved")
    return trainingData

#process the testing data in the same manner
def processTestData():
    print("Creating Testing Data")
    testData = []
    for img in tqdm(os.listdir(testDri)):
        print("image", img)
        path = os.path.join(testDri, img)
        imgNum = img.split(".")[0]
        img = cv2.imread(path, cv2.IMREAD_GRAYSCALE)
        img = cv2.resize(img, (imageSize, imageSize))
        testData.append([np.array(img), imgNum])

    np.save("testingData.npy", testData)
    print("Testing Data Saved")
    return testData



rnnSize = 512

model = Sequential()
model.add(LSTM(rnnSize, input_shape=(imageSize, imageSize)))
model.add(Dense(1024))
model.add(Activation('relu'))
model.add(Dense(50))
model.add(Activation('sigmoid'))
model.add(Dense(3))  
model.add(Activation('softmax'))


model.compile(loss='mean_squared_error', optimizer='adam',metrics=['accuracy'])

#Data
trainDir = "D:/TrainingDataSets/TrainingSet/"
testDri = "D:/TrainingDataSets/TestingSet/"

#trainData = makeTrainingData()
#testData = processTestData()
trainData = np.load('trainingData.npy')
testData = np.load("testingData.npy")
#resize the image to this See above
train = trainData[:-500]
test = trainData[-200:]

x = []
y = []
for xi in trainData:
    x.append(xi[0].reshape((-1, imageSize, imageSize)))
    y.append(xi[1])

x_train = np.array([i[0] for i in train]).reshape(-1,imageSize, imageSize,1)
y_train = [i[1] for i in train]



test_x = np.array([i[0] for i in test]).reshape(-1,imageSize , imageSize,1)
test_y = [i[1] for i in test]


epoch = 5
batchSize = 100

model.fit(x_train, y_train, epochs=epoch, batch_size= batchSize, verbose=1, shuffle=False)

根据您的工作,可能会有更好的性能方法...

答案 1 :(得分:0)

我建议将值放在from子句中:

select . . .,
       u7.cnt
from messages m join
     users u1 
     on m.userId1 = u1.id join
     users u2 
     on m.userId2 = u2.id cross join
     (select count(*)  as cnt from messages where userId1 = 7) u7
where 7 in (m.userId1, m.userId2) and
      8 in (m.userId2, m.userId1) 
order by sentDate;