Php Mysql子字符串定位分隔符

Php Mysql子字符串定位分隔符,php,mysql,Php,Mysql,我正在尝试使用左连接和SUBSTR定位组合表。其中一个表(ClientService)有一个名为description的列,我需要的记录介于“”之间 例如:这是一个测试“示例”。我需要示例与我的其他表(HostingAccount)进行比较 这就是我的疑问 SELECT CS.ClientServiceID, S.ServiceID, CS.InvoicePeriod, CS.

我正在尝试使用左连接和SUBSTR定位组合表。其中一个表(ClientService)有一个名为description的列,我需要的记录介于“”之间 例如:这是一个测试“示例”。我需要示例与我的其他表(HostingAccount)进行比较

这就是我的疑问

            SELECT
            CS.ClientServiceID,
            S.ServiceID,
            CS.InvoicePeriod,
            CS.Period,
            S.Price,
            S.ServiceCategoryID,
            IF(LENGTH(CS.Description) > 0, CS.Description, S.Description) AS Description,
            CS.Discount,
            DATE_FORMAT(CS.StartDate, "%d-%m-%Y") AS StartDate,
            '.($Timestamp === TRUE ? 'UNIX_TIMESTAMP(CS.PayedUntill)' : 'DATE_FORMAT(IFNULL(CS.PayedUntill, DATE_ADD(CS.StartDate, INTERVAL 1 YEAR)), "%d-%m-%Y")').' AS PayedUntill,
            DATEDIFF(NOW(), CS.PayedUntill) AS PayedUntillDifference,
            CS.ReferenceID,
            CS.External,
            CS.Redirect,
            CS.RedirectType,
            CS.Active,
            H.HostingID,
            H.ServerIP,
            H.Username
        FROM ClientService AS CS
        JOIN Client AS C
            ON C.ClientID = CS.ClientID
        JOIN Service AS S
            ON S.ServiceID = CS.ServiceID
        LEFT JOIN Hosting AS H
            ON H.HostingID = CS.ReferenceID
            AND H.ClientID = C.ClientID
        ---> LEFT JOIN HostingAccount AS HA
            ON HA. <----
        WHERE CS.ClientServiceID = :CSID
            AND C.ClientID = :CID
            AND CS.Active IN (1,5,6,9)
问题:

如何将SUBSTR查询与左JOIN HostingAccount合并为HA
关于HA.description(不带分隔符)=CS.description(在分隔符之间)

我没有测试以下内容,我不能100%确定我是否遵循了问题,但我想你的意思是这样的

<?php

    $sql='SELECT
            CS.`ClientServiceID`,
            S.`ServiceID`,
            CS.`InvoicePeriod`,
            CS.`Period`,
            S.`Price`,
            S.`ServiceCategoryID`,
            IF( LENGTH( CS.`Description` ) > 0, CS.`Description`, S.`Description`) AS "Description",
            CS.`Discount`,
            DATE_FORMAT(CS.`StartDate`, "%d-%m-%Y") AS "StartDate",
            ' .( $Timestamp === TRUE ? 'UNIX_TIMESTAMP( CS.`PayedUntill` )' : 'DATE_FORMAT(IFNULL(CS.`PayedUntill`, DATE_ADD(CS.`StartDate`, INTERVAL 1 YEAR)), "%d-%m-%Y")' ) . ' AS "PayedUntill",
            DATEDIFF(NOW(), CS.`PayedUntill`) AS "PayedUntillDifference",
            CS.`ReferenceID`,
            CS.`External`,
            CS.`Redirect`,
            CS.`RedirectType`,
            CS.`Active`,
            H.`HostingID`,
            H.`ServerIP`,
            H.`Username`
        FROM `ClientService` CS
        JOIN `Client` C ON C.ClientID = CS.ClientID
        JOIN `Service` S ON S.ServiceID = CS.ServiceID
        LEFT JOIN `Hosting` H ON H.HostingID = CS.ReferenceID AND H.ClientID = C.ClientID

        LEFT JOIN `HostingAccount` HA ON HA.`description`=(
            SELECT SUBSTR(`Description`, LOCATE( \'"\', `Description` )+1,
                ( CHAR_LENGTH( `Description`) - LOCATE(\'"\',REVERSE(`Description`) ) - 
                LOCATE(\'"\',Description))) 
                from `ClientService`
        )

        WHERE CS.`ClientServiceID` = :CSID
            AND C.`ClientID` = :CID
            AND CS.`Active` IN (1,5,6,9)';


?>

我用一个问题编辑了代码是的,谢谢。这正是我想要的。因此,需要将代码粘贴到左连接中
<?php

    $sql='SELECT
            CS.`ClientServiceID`,
            S.`ServiceID`,
            CS.`InvoicePeriod`,
            CS.`Period`,
            S.`Price`,
            S.`ServiceCategoryID`,
            IF( LENGTH( CS.`Description` ) > 0, CS.`Description`, S.`Description`) AS "Description",
            CS.`Discount`,
            DATE_FORMAT(CS.`StartDate`, "%d-%m-%Y") AS "StartDate",
            ' .( $Timestamp === TRUE ? 'UNIX_TIMESTAMP( CS.`PayedUntill` )' : 'DATE_FORMAT(IFNULL(CS.`PayedUntill`, DATE_ADD(CS.`StartDate`, INTERVAL 1 YEAR)), "%d-%m-%Y")' ) . ' AS "PayedUntill",
            DATEDIFF(NOW(), CS.`PayedUntill`) AS "PayedUntillDifference",
            CS.`ReferenceID`,
            CS.`External`,
            CS.`Redirect`,
            CS.`RedirectType`,
            CS.`Active`,
            H.`HostingID`,
            H.`ServerIP`,
            H.`Username`
        FROM `ClientService` CS
        JOIN `Client` C ON C.ClientID = CS.ClientID
        JOIN `Service` S ON S.ServiceID = CS.ServiceID
        LEFT JOIN `Hosting` H ON H.HostingID = CS.ReferenceID AND H.ClientID = C.ClientID

        LEFT JOIN `HostingAccount` HA ON HA.`description`=(
            SELECT SUBSTR(`Description`, LOCATE( \'"\', `Description` )+1,
                ( CHAR_LENGTH( `Description`) - LOCATE(\'"\',REVERSE(`Description`) ) - 
                LOCATE(\'"\',Description))) 
                from `ClientService`
        )

        WHERE CS.`ClientServiceID` = :CSID
            AND C.`ClientID` = :CID
            AND CS.`Active` IN (1,5,6,9)';


?>