質問編集履歴
3
追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -588,7 +588,7 @@
|
|
588
588
|
|
589
589
|
echo $row['技-1'].'<br />';
|
590
590
|
|
591
|
-
echo $row['技-
|
591
|
+
echo $row['技-2'].'<br />';
|
592
592
|
|
593
593
|
echo $row['レベル-1'].'<br />';
|
594
594
|
|
2
追記
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
追記
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)は人によって複数あるので、ある分だけを表示させたいです。
|