添加/分配数字以复制行

时间:2016-03-14 09:30:09

标签: php mysql

我有一个名称和地址表,以及两个查询:

$authors = "SELECT * FROM authors";

$addresses = "SELECT @rownum := @rownum + 1 AS addno, a.authorAdd FROM (SELECT DISTINCT authorAdd FROM authors) a JOIN (SELECT @rownum := 0) r"; 

第二个当前为每个唯一地址分配唯一的行号,如下所示:

66 Acacia Avenue   1
301 Penny Lane    2

我需要做的是以某种方式将这两个查询组合在一起,以生成一个具有这些分配号码的地址的作者列表。即。

Name        Address           AddressNo
Joe Blogs   66 Acacia Avenue  1
Bob Smith   301 Penny Lane    2
Jane Blogs  66 Acacia Avenue  1
Sarah Smith 301 Penny Lane    2

这样我就可以将它们显示为参考:

Joe Blogs(1),Bob Smith(2),Jane Blogs(1),Sarah Smith(2)

(1)66 Acacia Avenue,(2)301 Penny Lane

我考虑过添加jquery来动态添加数字,以便在提交时直接插入到数据库中,但不确定它是如何工作的。

所以选择了PHP显示选项,这显然很棘手,好像我将两个查询合并到一个查询中它实际上是在所有结果上重新分配行号,而我只需要它们用于一个查询(地址) ,如果这是有道理的。

任何帮助都会感激不尽!感谢

2 个答案:

答案 0 :(得分:1)

您可以使用{!! Html::linkRoute('updateUserContact', '<img style="height: 100%; width: 100%; object-fit: contain" src="' . asset('images/add.png') . '"/>', contacts->id) !!}

获取mysql
session variable

您可以在此处查看示例SQLFiddle。我不是php开发人员,你可以使用mysql所以在PHP代码中你可以运行这个查询。这对你有帮助。

答案 1 :(得分:0)

这是我的简历:

创建PROC

DELIMITER //
CREATE FUNCTION rownr (s CHAR(64))
    RETURNS INT DETERMINISTIC
  BEGIN
    IF s = @rownr_oldval THEN
      SET @rownr_nr:=@rownr_nr+1;
    ELSE
      SET @rownr_nr:=1;
    END IF;

    SET @rownr_oldval:=s;
    RETURN @rownr_nr;
END //
DELIMITER ;

获取结果

SELECT  rownr(Address),m.* FROM authors m,(SELECT rownr('')) AS tmp ORDER by Address;

如果你想在结果中进行另一种排序,你必须放置一个SELECT。

SELECT * 
  FROM (
   SELECT  rownr(Address),m.* FROM authors m,(SELECT rownr('')) AS tmp
   ORDER by  Address
  ) ORDER by YOURFIELD;

如果适合你,请告诉我