帮助选择sql语法 [英] help with sql select syntax

查看:85
本文介绍了帮助选择sql语法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在这里,他来混淆他的一天! (从现在开始应该是我的手柄)



我很困惑,非常遗憾。



了解如何使FriendID与其关联的选择语句UserID





>



正如你可以看到FriendID涉及到我的用户表的UserID,所以如果FriendID = 2,那么显示UserID 2的细节。 b
$ b

即时消息试图做的是如果即时消息用户ID 1我想显示所有我的朋友,我的用户ID由会话设置,



我需要做的是找出我的朋友是谁这样从朋友中选择FriendID,其中SessionID = UserID,然后在User表中找出friendsID属于谁,并显示他的名字,第二名和他的图片路径。



非常令人困惑...

我的表结构如下所示:

p>



因此,在我的选择命令中总结一下我需要的内容:

要找出哪些朋友与(currentsession UserID具有FriendID's)
显示与其自己的用户ID有关的friendID的名字,姓氏,图片路径。例如:

(p)$(

) userID = 1)FriendID 2 = UserID 2,所以选择用户的第一名,第二名,其中UserID = 2



我可能与我的表结构有关系问题不确定。 / p>

我希望你能理解我的疑惑:

编辑我的数据库的图像

  SET @OLD_UNIQUE_CHECKS = @@ UNIQUE_CHECKS,UNIQUE_CHECKS = 0; 

SET @OLD_FOREIGN_KEY_CHECKS = @@ FOREIGN_KEY_CHECKS,FOREIGN_KEY_CHECKS = 0;

SET @OLD_SQL_MODE = @@ SQL_MODE,SQL_MODE ='TRADITIONAL';



如果不存在CREATE SCHEMA`gymwebsite2` DEFINULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;

USE`gymwebsite2`;



- -------------------------------- ---------------------

- 表`gymwebsite2`.`User`

- - -------------------------------------------------- -

CREATE TABLE if NOT EXISTS`gymwebsite2`.`User`(

`UserID` INT NOT NULL AUTO_INCREMENT,

`Email` VARCHAR(245)NULL,

`FirstName` VARCHAR(45)NULL,

`SecondName` VARCHAR(45)NULL,

`DOB `VARCHAR(45)NULL,

`Location` VARCHAR(45)NULL,

`Aboutme` VARCHAR(1045)NULL,

` VARCHAR(45)NULL,

`password` VARCHAR(45)NULL,

PRIMARY KEY(`UserID`))

ENGINE = InnoDB;





- ------------------------ -----------------------------

- 表`gymwebsite2`.`WallPosting`

- ------------------------------------------- ----------

CREATE TABLE if NOT EXISTS`gymwebsite2`.`WallPosting`(

`idWallPosting` INT NOT NULL AUTO_INCREMENT,

`UserID` INT NOT NULL,

`Wallpostings` VARCHAR(2045)NULL,

PRIMARY KEY(`idWallPosting`),

INDEX``fk_WallPosting_User`(`UserID` ASC),

CONSTRAINT`fk_WallPosting_User`

FOREIGN KEY(`UserID`)

参考文献``user``(`UserID`)

在删除不行动

在更新不行动)

ENGINE = InnoDB;





- ------------------------ -----------------------------

- 表`gymwebsite2```Pictures`

- ------------------------------------------- ----------

CREATE TABLE if NOT EXISTS`gymwebsite2`.`Pictures`(

`idPictures` INT NOT NULL AUTO_INCREMENT,

`UserID` INT不为NULL,

`picturepath` VARCHAR(1045)NULL,

PRIMARY KEY(`idPictures`),

INDEX`fk_Pictures_User1`(`UserID` ASC),

CONSTRAINT`fk_Pictures_User1`

FOREIGN KEY(`UserID`)

参考文献``user``(`UserID`)

在删除不行动

在更新不行动)

ENGINE = InnoDB;





- ------------------------ -----------------------------

- 表gymwebsite2`.`Friends`

- ------------------------------------------- ----------

CREATE TABLE if NOT EXISTS`gymwebsite2`.`Friends`(

`idFriends` INT NOT NULL AUTO_INCREMENT,

`UserID` INT NOT NULL,

`FriendID` INT NOT NULL,

PRIMARY KEY(`idFriends`),

INDEX`fk_Friends_User2`(`FriendID` ASC),

INDEX`fk_Friends_User1`(`UserID` ASC),

UNIQUE INDEX`FriendID_UNIQUE`(`FriendID` ASC) ,

CONSTRAINT`fk_Friends_User2`

FOREIGN KEY(`FriendID`)

参考`gymwebsite2`.`User`(`UserID`)

ON删除无操作

ON UPDATE NO ACTION,

CONSTRAINT`fk_Friends_User1`

FOREIGN KEY(`UserID` )

REFERENCES`gymwebsite2`.`User`(`UserID`)

ON DELETE NO A CTION

ON UPDATE NO ACTION)

ENGINE = InnoDB;







SET SQL_MODE = @ OLD_SQL_MODE;

SET FOREIGN_KEY_CHECKS = @ OLD_FOREIGN_KEY_CHECKS;

SET UNIQUE_CHECKS = @ OLD_UNIQUE_CHECKS;


解决方案

  select u .FirstName,u.SecondName,p.picturePath 
来自用户u
加入好友f
对f.FriendId = u.UserId
加入图片p
在p。 UserId = u.UserId
其中f.UserId = SessionId(< - sessionId是你的id)


Here he comes to confuse his day! (should be my handle from now on)

Im confused and very much lost.

I need to figure out how to make a select statement for getting FriendID to relate to there UserID

As you can see FriendID relates to the UserID of my User table, so if FriendID = 2 then display UserID 2 details.

What im trying to do is if im UserID 1 I want to display all my friends, my userid is set by a session,

What I need to do is find out who my friends are so Select FriendID from freinds where SessionID = UserID then some how figure out who friendsID belongs to in the User table and display his firstname, secondname and his picturepath.

Very confusing...

My table structure looks like this:

So to sum it up what I need in my select command:

To find out who im friends with (currentsession UserID has FriendID's) Display FirstName, SecondName, picturepath of friendID related to his own UserID

Example:

I (userID=1) have FriendID 2 = UserID 2 so select firstname, secondname from User where UserID=2

I could have relational problems with my table structure tho not sure.

I hope u can understand my confusion:

EDIT for those that cant see the images of my db

    SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;

SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;

SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';



CREATE SCHEMA IF NOT EXISTS `gymwebsite2` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci ;

USE `gymwebsite2` ;



-- -----------------------------------------------------

-- Table `gymwebsite2`.`User`

-- -----------------------------------------------------

CREATE  TABLE IF NOT EXISTS `gymwebsite2`.`User` (

  `UserID` INT NOT NULL AUTO_INCREMENT ,

  `Email` VARCHAR(245) NULL ,

  `FirstName` VARCHAR(45) NULL ,

  `SecondName` VARCHAR(45) NULL ,

  `DOB` VARCHAR(45) NULL ,

  `Location` VARCHAR(45) NULL ,

  `Aboutme` VARCHAR(1045) NULL ,

  `username` VARCHAR(45) NULL ,

  `password` VARCHAR(45) NULL ,

  PRIMARY KEY (`UserID`) )

ENGINE = InnoDB;





-- -----------------------------------------------------

-- Table `gymwebsite2`.`WallPosting`

-- -----------------------------------------------------

CREATE  TABLE IF NOT EXISTS `gymwebsite2`.`WallPosting` (

  `idWallPosting` INT NOT NULL AUTO_INCREMENT ,

  `UserID` INT NOT NULL ,

  `Wallpostings` VARCHAR(2045) NULL ,

  PRIMARY KEY (`idWallPosting`) ,

  INDEX `fk_WallPosting_User` (`UserID` ASC) ,

  CONSTRAINT `fk_WallPosting_User`

    FOREIGN KEY (`UserID` )

    REFERENCES `gymwebsite2`.`User` (`UserID` )

    ON DELETE NO ACTION

    ON UPDATE NO ACTION)

ENGINE = InnoDB;





-- -----------------------------------------------------

-- Table `gymwebsite2`.`Pictures`

-- -----------------------------------------------------

CREATE  TABLE IF NOT EXISTS `gymwebsite2`.`Pictures` (

  `idPictures` INT NOT NULL AUTO_INCREMENT ,

  `UserID` INT NOT NULL ,

  `picturepath` VARCHAR(1045) NULL ,

  PRIMARY KEY (`idPictures`) ,

  INDEX `fk_Pictures_User1` (`UserID` ASC) ,

  CONSTRAINT `fk_Pictures_User1`

    FOREIGN KEY (`UserID` )

    REFERENCES `gymwebsite2`.`User` (`UserID` )

    ON DELETE NO ACTION

    ON UPDATE NO ACTION)

ENGINE = InnoDB;





-- -----------------------------------------------------

-- Table `gymwebsite2`.`Friends`

-- -----------------------------------------------------

CREATE  TABLE IF NOT EXISTS `gymwebsite2`.`Friends` (

  `idFriends` INT NOT NULL AUTO_INCREMENT ,

  `UserID` INT NOT NULL ,

  `FriendID` INT NOT NULL ,

  PRIMARY KEY (`idFriends`) ,

  INDEX `fk_Friends_User2` (`FriendID` ASC) ,

  INDEX `fk_Friends_User1` (`UserID` ASC) ,

  UNIQUE INDEX `FriendID_UNIQUE` (`FriendID` ASC) ,

  CONSTRAINT `fk_Friends_User2`

    FOREIGN KEY (`FriendID` )

    REFERENCES `gymwebsite2`.`User` (`UserID` )

    ON DELETE NO ACTION

    ON UPDATE NO ACTION,

  CONSTRAINT `fk_Friends_User1`

    FOREIGN KEY (`UserID` )

    REFERENCES `gymwebsite2`.`User` (`UserID` )

    ON DELETE NO ACTION

    ON UPDATE NO ACTION)

ENGINE = InnoDB;







SET SQL_MODE=@OLD_SQL_MODE;

SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;

SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

解决方案

select u.FirstName, u.SecondName, p.picturePath
from User u
join Friends f
  on f.FriendId = u.UserId
join Pictures p
  on p.UserId = u.UserId
where f.UserId = SessionId ( <-- sessionId is your id)

这篇关于帮助选择sql语法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆