加入查询关系数据

时间:2017-04-18 02:37:31

标签: sql-server

你可以帮帮我吗?

示例数据:

enter image description here

说明:

  TableA is =IDAPK, No Urut(L1), No Tampil (L1), Text Faktor (L1)

  TableB is =IDBPK, IDAFK, No Urut(L2), No Tampil (L2), Text Faktor (L2)

  IDAPK=IDAFK (ForeignKkey)

你可以加入使用SQL Server进行查询,就像上图中的结果一样吗?我无法找到自己的逻辑。 谢谢......

2 个答案:

答案 0 :(得分:1)

我找到了一种方法。两个query中的两个table然后Union All resultSelect [No Urut(L1)],[No Tampil (L1)],[Text Faktor (L1)],[No Urut(L2)],[No Tampil (L2)],[Text Faktor (L2)] From ( Select IDAPK As ID,1 As SL,[No Urut(L1)],[No Tampil (L1)],[Text Faktor (L1)],'' As [No Urut(L2)],'' As [No Tampil (L2)], '' As [Text Faktor (L2)] From TableA Union All Select IDAFK As ID,2 As SL,'' As [No Urut(L1)],'' As [No Tampil (L1)],'' As [Text Faktor (L1)],[No Urut(L2)],[No Tampil (L2)],[Text Faktor (L2)] From TableB ) As TableAB Order By ID, SL 。检查下面的SQL:

int lightPin = A0;
int valLight = 0;
int ledTrans = 2;
int pirTrans = 3;
int pirPin = 4;
int pirState = LOW;
int CalTime = 30;
int colorTrans = 5;
int s2 = 6;
int s3 = 7;
int OUTpin= 8;
boolean RD= false;
boolean GD = false ;
boolean BD = false;
int rfPin = 9;



void setup() {
pinMode(A0,INPUT);
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,INPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,INPUT);
pinMode(9,OUTPUT);

  Serial.begin(9600);
}



  void printlines();
  void pirSensor();
  void colorSensor();
  void pirSensor2();







void lightSensor() {
  //light sensor
  valLight = analogRead(A0);
  delay(1000);

  if (valLight >= 300) {
    ledTrans = HIGH;
    pirTrans = HIGH;
    pirSensor();
  } else {
    delay(8000);
    }
    }



void pirSensor() {

  // Calibration

  for ( byte i = 0; i < 30; i++) {
    delay(1000);
  }


// Check PIR state

int pirState =  digitalRead(2);
delay(1500);
pirState = digitalRead(2);

if (pirState == HIGH) {
  colorTrans = HIGH;
  colorSensor();
      } else if (pirState == LOW) {
  pirState = LOW;
  lightSensor();
}

}



      void colorSensor(){
      //Check Color reads pulse for RGB

    // void checkred
      digitalWrite(s2, LOW);
      digitalWrite(s3, LOW);
      unsigned int RW = 255 - (pulseIn(OUTpin, LOW)/ 400 - 1);  // turns into 0-255
      delay(6000);

  // void checkgreen
  digitalWrite(s2,LOW);
  digitalWrite(s3,HIGH);
  unsigned int GW =  255 - (pulseIn(OUTpin, LOW)/  400 - 1);
  delay(6000);

    // void checkblue
    digitalWrite(s2, HIGH);
digitalWrite( s3, HIGH);
  unsigned int BW = 255 - (pulseIn(OUTpin, LOW) / 400 - 1);
  delay(6000);
// seeing which color I got(r g or b)


if (RW > BW && RW > GW){
RD = true;    
 delay(7000);
  }  else if  (GW > RW && GW > BW){
    GD = true;
  delay(7000);
      } else if  (BW > RW && BW > GW){
    BD = true;
    delay(4000);
  }
}


void pirSensor2(){

pirState =  digitalRead(2);
delay(1500);
pirState = digitalRead(2);

  if(pirState = HIGH){
      colorSensor();
    }else{
      printlines();

    }
    }
















 void printlines(){
   if(RD){
   Serial.print("RED DETECTED");
 } else if(GD){
   Serial.print("GREEN DETECTED");
   }else if(BD){
    Serial.print("BLUE DETECTED");
  }else if(RD && GD){
    Serial.print("RED & GREEN DETECTED");
  }else if(RD && BD){
    Serial.print("RED & BLUE DETECTED");
  }else if(BD && GD){
    Serial.print("GREEN & BLUE DETECTED");
  }else if(RD && GD && BD){
    Serial.print("RED, GREEN, BLUE DETECTED");
  }
  delay(7000);
   }

输出SQL:

enter image description here

答案 1 :(得分:0)

此查询使用INNER JOIN,因此它返回两个表中具有匹配值的记录。

<script src="https://d3js.org/d3.v4.min.js"></script>