質問編集履歴

3

追記

2016/06/26 15:40

投稿

earnest_gay
earnest_gay

スコア615

test CHANGED
File without changes
test CHANGED
@@ -588,7 +588,7 @@
588
588
 
589
589
  echo $row['技-1'].'<br />';
590
590
 
591
- echo $row['技-1'].'<br />';
591
+ echo $row['技-2'].'<br />';
592
592
 
593
593
  echo $row['レベル-1'].'<br />';
594
594
 

2

追記

2016/06/26 15:39

投稿

earnest_gay
earnest_gay

スコア615

test CHANGED
File without changes
test CHANGED
@@ -497,3 +497,109 @@
497
497
 
498
498
 
499
499
  技(私の場合ではskillとyear)は人によって複数あるので、ある分だけを表示させたいです。
500
+
501
+
502
+
503
+
504
+
505
+ ---
506
+
507
+ 6/27 0:28 追記
508
+
509
+
510
+
511
+ GROUP_CONCATでやりたいことに**似た**ことができました。
512
+
513
+
514
+
515
+ ![イメージ説明](99e39904d0b3995c0ae29271b6cd847f.png)
516
+
517
+
518
+
519
+
520
+
521
+ ```ここに言語を入力
522
+
523
+ $en = filter_input(INPUT_GET, 'EN');
524
+
525
+ $sql = "SELECT name.id, name AS 'キャラ名', user_id,GROUP_CONCAT(skill) AS '技',GROUP_CONCAT(level) AS 'レベル' FROM name LEFT JOIN skill ON name.id = skill.user_id WHERE name.id = '$en' GROUP BY name.id";
526
+
527
+ $stmt = $pdo->prepare($sql);
528
+
529
+ $stmt->execute();
530
+
531
+
532
+
533
+ var_dump($sql);
534
+
535
+
536
+
537
+ foreach ($stmt as $row) {
538
+
539
+ echo '<br /><br />';
540
+
541
+ echo 'キャラ名:'.$row['キャラ名'].'<br />';
542
+
543
+ echo 'キャラ名:'.$row['技'].'<br />';
544
+
545
+ echo 'キャラ名:'.$row['レベル'].'<br />';
546
+
547
+ }
548
+
549
+ ```
550
+
551
+
552
+
553
+ ![イメージ説明](b524abda387535fc094356fbc530ff4c.png)
554
+
555
+
556
+
557
+ これは、$row['レベル']内に該当のものがすべて入ってるのですべて出力されますが
558
+
559
+
560
+
561
+ キャラ名:ナルト
562
+
563
+ 技名 レベル
564
+
565
+ 螺旋丸 LV50
566
+
567
+ 螺旋手裏剣 LV80
568
+
569
+
570
+
571
+ という風に分けて表示したいので、
572
+
573
+ $row['技']内や$row['レベル']内に該当のものがすべて入ってるイメージではなく
574
+
575
+
576
+
577
+ 螺旋丸なら螺旋丸
578
+
579
+ 螺旋手裏剣なら螺旋手裏剣
580
+
581
+ ひとつひとつに割り当てられてるイメージでした。
582
+
583
+
584
+
585
+
586
+
587
+ echo 'キャラ名:'.$row['キャラ名'].'<br />';
588
+
589
+ echo $row['技-1'].'<br />';
590
+
591
+ echo $row['技-1'].'<br />';
592
+
593
+ echo $row['レベル-1'].'<br />';
594
+
595
+ echo $row['レベル-2'].'<br />';
596
+
597
+
598
+
599
+
600
+
601
+ のような。
602
+
603
+
604
+
605
+ とりあえず分けて表示したいのですがどうしたらよいでしょうか?

1

追記

2016/06/26 15:37

投稿

earnest_gay
earnest_gay

スコア615

test CHANGED
File without changes
test CHANGED
@@ -349,3 +349,151 @@
349
349
  PRIMARY KEY (`id`)
350
350
 
351
351
  ) ENGINE=InnoDB AUTO_INCREMENT=25 DEFAULT CHARSET=utf8 |
352
+
353
+
354
+
355
+ ---
356
+
357
+
358
+
359
+ 【追記】
360
+
361
+ 重複したカラムを取得する方法はASで別名を付けることで解決しました。
362
+
363
+ 2回表示されているものは下記のSQL文に修正することで解決しました。
364
+
365
+
366
+
367
+ ```sql
368
+
369
+ SELECT UD.id,created,name5,name6,birth_year,birth_month,birth_day,gender,pref,city,
370
+
371
+ skill,US.year AS skill_year,
372
+
373
+ quali,UQ.year AS quali_year,day,
374
+
375
+ lang,lang_deg,
376
+
377
+ major_category,major_skill,cont_date,introduction
378
+
379
+ FROM user_data UD
380
+
381
+ LEFT JOIN user_skill US ON UD.id = US.user_id
382
+
383
+ LEFT JOIN user_quali UQ ON UD.id = UQ.user_id
384
+
385
+ LEFT JOIN user_lang UL ON UD.id = UL.user_id
386
+
387
+ LEFT JOIN user_pr UP ON UD.id = UP.user_id
388
+
389
+ WHERE UD.id = '$en'
390
+
391
+ GROUP BY UD.id;
392
+
393
+ ```
394
+
395
+ 2回表示されなくなった結果、本当は2つあるスキルが1つしか表示されなくなりました。
396
+
397
+
398
+
399
+ ![イメージ説明](691de337e7a05a693c154a1ba58ef52e.png)
400
+
401
+
402
+
403
+ GROUP BYでスキルが1つしかない状態ですが、実際にはDBに2フィールド登録されています。
404
+
405
+
406
+
407
+ ![イメージ説明](6d5a70dbc1ef4a9680efea0577f770ee.png)
408
+
409
+
410
+
411
+
412
+
413
+
414
+
415
+
416
+
417
+ これはどう対処したらよろしいのでしょうか?
418
+
419
+
420
+
421
+ 規模を小さくして考えるとこうなります。
422
+
423
+
424
+
425
+ +-----------+------+----+----------+------------+
426
+
427
+ | ninjya_id |name | id | skill_id | skill_name |
428
+
429
+ +-----------+------+----+----------+------------+
430
+
431
+ | 1 |ナルト| 1 | 1 | 螺旋丸 |
432
+
433
+ +-----------+------+----+----------+------------+
434
+
435
+ | 1 |ナルト| 2 | 1 |超大玉螺旋丸|
436
+
437
+ +-----------+------+----+----------+------------+
438
+
439
+ | 2 |サスケ| 3 | 2 | 千鳥 |
440
+
441
+ +-----------+------+----+----------+------------+
442
+
443
+ | 2 |サスケ| 4 | 2 | 天照 |
444
+
445
+ +-----------+------+----+----------+------------+
446
+
447
+ | 2 |サスケ| 5 | 2 | 月読 |
448
+
449
+ +-----------+------+----+----------+------------+
450
+
451
+
452
+
453
+
454
+
455
+ 【名前】
456
+
457
+ ナルト
458
+
459
+
460
+
461
+ 【技】
462
+
463
+ 螺旋丸
464
+
465
+ 超大玉螺旋丸
466
+
467
+
468
+
469
+
470
+
471
+ とか
472
+
473
+
474
+
475
+
476
+
477
+ 【名前】
478
+
479
+ サスケ
480
+
481
+
482
+
483
+ 【技】
484
+
485
+ 千鳥
486
+
487
+ 天照
488
+
489
+ 月読
490
+
491
+
492
+
493
+ とか表示させたいのです。
494
+
495
+
496
+
497
+
498
+
499
+ 技(私の場合ではskillとyear)は人によって複数あるので、ある分だけを表示させたいです。